急!怎样继承一个Edit的所有事件和方法? 在一个窗口上有很多Edit用于输入数据,每个Edit只允许输入数字和小数点,为此要为edit的OnKeyPress事件写控制代码,能否只写一个edit的代码,其他Edit都继承它呢?请问该如何做?最好说得详细点。谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你只在一个EDIT的OnKeyPress事件中写入代码,把其它的EDIT的OnKeyPress事件指到这个方法就行了。 怎么把其它的EDIT的OnKeyPress事件指到这个方法呢?给个例子好吗如果能继承的话,不就连上面的操作也省下了么? 你先写好一个edit的OnKeyPress事件,然后在属性察看器中,其他Edit的OnKeyPress不是有一个下拉框吗,拉下来,下面就有你写好的edit的OnKeyPress事件的函数,选中它就可以。听得明白吗 TMyEdit=Class(TEdit);就全继承了,难的是继承一部分。 NO,NO,所谓花非花,道非道。楼上说的和楼主说的风马牛不及。其实楼主说继承是用词不当了,这不是什么继承,这是软件代码复用中最基本的一种过程或函数或方法复用。楼主,前面几位的意思是让你单独写一个方法,比如:TForm1.ControlInputting(Sender: TObject; var Key: Char);begin//your codesend;然后其余不管是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 codesend;你在声明这个方法的时候必须使其过程类型或方法类型与事件所属的类型相一致,比如你可以这样声明:private procedure ControlInputting(Sender: TObject; var Key: Char);这样就可以了。 补充,关于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类型。 在一个EDIT的OnKeyPress事件中写入代码,把其它的EDIT的OnKeyPress事件指到这个方法 当cxGrid的从表为空时,如何让主表前面的加号不显示? PageControl页面显示的问题! ComboBox中加载图标 将鼠标限制在图片上,如何取消限制; 请有经验的朋友给一些思路:Client端到Server端文件传输. 在Windows2003下怎么见虚拟目录! 关于FASTREPORT使用的几点问题。 大家帮我看看代码错在那里吧,谢谢了! TDBNavigator控件中的删除操作在执行前会询问是否“delete record”,能否把它去掉,直接删除? 那儿有关于ADO异步编程的资料? 绝对必要的日期函数 简单问题。给分
如果能继承的话,不就连上面的操作也省下了么?
听得明白吗
楼上说的和楼主说的风马牛不及。
其实楼主说继承是用词不当了,这不是什么继承,这是软件代码复用中最基本的一种过程或函数或方法复用。
楼主,前面几位的意思是让你单独写一个方法,比如:
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);
这样就可以了。
20 property OnKeyPress: TKeyPressEvent;
第10行表示TKeyPressEvent事件类型的定义并说明它是一个方法类型而不是过程类型,因为后面有of object,关于过程类型与方法类型请自行查阅。
第20行表示OnKeyPress事件(就是TEdit类型,其实也是所有的TWinControl类型)属于刚才上面所定义的TKeyPresEvent类型。