在protected下写:
 procedure KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState); override; //注意不要将KeyDown写成FormKeyDown实现:
procedure TBaseForm.KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState); 
begin
  inherited KeyPress(Key);
  //你的代码
end;另外:
constructor TBaseForm.Create(AOwner: TComponent)
  begin
    TBaseForm.OnKeyDown = FormKeyDown;//这句不要了。还要提醒你,重载方法时,要加上inherited。
  end;
—————————————————————————————————
MaximStr := '宠辱不惊,看庭前花开花落,去留无意;
             毁誉由人,望天上云卷云舒,聚散任风。';
if Not Assigned(I) then
  I := TI.Create(Nil);
I.Maxim := MaximStr;
I.Explain := '假如上述代码中出现“OA”、“3D”等字样,改为“=”或者去掉';
I.Desire := '加不加分随你';
—————————————————————————————————
    

解决方案 »

  1.   

    怎么好象还是不对啊
    就是告诉我在基类中没有找到KEYDOWN 啊
      

  2.   

    有这么麻烦吗?
    不是在建立新的子类窗体时,从你工程中已有的窗体继承过来就行了。(New|project1|BaseForm)
    然后激活子类窗体的KeyDown事件,然后在代码中都会自动添加Inherited的。
      

  3.   

    我不是要把整个窗体都继承啊
    我只想继承那个窗体的一个FORKEYDOWN事件啊上面那位兄弟有办法吗?
      

  4.   

    不会吧。
    有你这样的需求吗?
    如果真要这样,那就直接调用父类KeyDown事件的Published方法
      

  5.   

    所有Form的基类都是TForm,比如Form1=class(TForm)
    那么你在编辑Form1的时候双击button1进去写的东西不是在定义Form1这个实例,事实上你是在定义TForm1这个子类。procedure TForm1.Button1Click(sender:tobject);
    不是procedure TForm.Button1Click(sender:tobject);运行的时候所看到的窗体Form1是在dpr文件里面创建的:application.createform(form1,tform1);这里创建的Form1才是属于TForm1的实例。那么既然form1这个实例能响应TForm1里面定义好的Button1click这个事件,其实Button1click就是消息循环分发消息以后由窗口事件调用的。那么你想写一个新类继承自TForm1当然也可以了!因为procedure TForm1.Button1Click(sender:tobject);是在Tform1的publish部分声明的(没有说明表示是publish部分)。但是你要重载它,就要加上inherited关键字,否则不能调用TForm1里面定义过的Button1Click FormKeyDown同理!