在一个窗口上有很多Edit用于输入数据,每个Edit只允许输入数字和小数点,为此要为edit的OnKeyPress事件写控制代码,能否只写一个edit的代码,其他Edit都继承它呢?请问该如何做?最好说得详细点。谢谢

解决方案 »

  1.   

    你只在一个EDIT的OnKeyPress事件中写入代码,把其它的EDIT的OnKeyPress事件指到这个方法就行了。
      

  2.   

    怎么把其它的EDIT的OnKeyPress事件指到这个方法呢?给个例子好吗
    如果能继承的话,不就连上面的操作也省下了么?
      

  3.   

    你先写好一个edit的OnKeyPress事件,然后在属性察看器中,其他Edit的OnKeyPress不是有一个下拉框吗,拉下来,下面就有你写好的edit的OnKeyPress事件的函数,选中它就可以。
    听得明白吗
      

  4.   

    TMyEdit=Class(TEdit);就全继承了,难的是继承一部分。
      

  5.   

    NO,NO,所谓花非花,道非道。
    楼上说的和楼主说的风马牛不及。
    其实楼主说继承是用词不当了,这不是什么继承,这是软件代码复用中最基本的一种过程或函数或方法复用。
    楼主,前面几位的意思是让你单独写一个方法,比如:
    TForm1.ControlInputting(Sender: TObject; var Key: Char);
    begin
    //your codes
    end;
    然后其余不管是10个还是100个TEdit类型对象的OnKeyPress事件都可以复用这个方法,比如:
    TForm1.Edit1OnKeyPress(Sender: TObject; var Key: Char);
    begin
      ControlInputting(Sender);
    end;
    TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
    begin
      ControlInputting(Sender);
    end;
    ..............
    TForm1.Edit100KeyPress(Sender: TObject; var Key: Char);
    begin
      ControlInputting(Sender);
    end;
    有一点你必须注意,就是:
    TForm1.ControlInputting(Sender: TObject; var Key: Char);
    begin
    //your codes
    end;
    你在声明这个方法的时候必须使其过程类型或方法类型与事件所属的类型相一致,比如你可以这样声明:
    private 
      procedure ControlInputting(Sender: TObject; var Key: Char);
    这样就可以了。
      

  6.   

    补充,关于OnKeyPress的事件类型请查阅Delphi的帮助,你会发现它的原型和我定义的一致。10 type TKeyPressEvent = procedure (Sender: TObject; var Key: Char) of object;
    20 property OnKeyPress: TKeyPressEvent;
    第10行表示TKeyPressEvent事件类型的定义并说明它是一个方法类型而不是过程类型,因为后面有of object,关于过程类型与方法类型请自行查阅。
    第20行表示OnKeyPress事件(就是TEdit类型,其实也是所有的TWinControl类型)属于刚才上面所定义的TKeyPresEvent类型。
      

  7.   

    在一个EDIT的OnKeyPress事件中写入代码,把其它的EDIT的OnKeyPress事件指到这个方法