作者:余陈辉syllabear | 来源:互联网 | 2023-05-18 14:42
我自己写了一个控件,一开始是从TEdit继承下来的,后来发现用TypInfo.pas中的IsPublishedProp函数不能找到它的OnChange事件,原因我知道了,是因为我没有P
我自己写了一个控件,
一开始是从TEdit继承下来的,
后来发现用TypInfo.pas中的
IsPublishedProp函数不能找到它的OnChange事件,
原因我知道了,是因为我没有Published property OnChange;
但是因为是从TEdit继承下的,所以这个事件还是在事件列表中的,
只是用IsPublishedProp个找不到罢了,
所以我后将它从TCustomEdit上继承下来了,
并在Published中加入了property OnChange等,
并重新编译安装。
但我发现在一个界面上原来有的这个控件还是不能用IsPublishedProp发现OnChange,
但后来放上去的控件就可以用IsPublishedProp发现OnChange事件,
请问为什么?
我已经将程序的Dcu文件全部删除,并完全编译了程序。
12 个解决方案
因为已经做了很多界面了,所以不想一个个将原来的控件删掉了再得新做一遍!
我想可能是你新增的控件所用的单元是你所重载过的,原来的用没用重载过的单元,所以会这样子。
我用了TForm的继承,
但是祖先Form上没有这个控件!
gz
我只写过简单的控件,好象不知道。学习。帮你t
兄弟们还有没有其它方法啊?
快点啊我要完不成任务了!
分数我很多啊!
多得可以让你变成一颗红星啊!
搞定了!
谢谢大家关心,
原来问题出在这里:
for i:=0 to ControlCount-1 do
if IsPublishedProp(Controls[i],'OnChange') then
SetMethodProp(Controlsi],'OnChange',TMethod(ChangeEvent));
原来我原有的控件放在一个Panel上,
它不包含在self.Controls中!
你是用的Delphi几呀
我这边不管是继承正TEdit 还是TCustomEdit都可以找到OnChange呀