高手救命!关于RTTI,自定义的控件包(100分)

  • 主题发起人 主题发起人 nikoy
  • 开始时间 开始时间
N

nikoy

Unregistered / Unconfirmed
GUEST, unregistred user!
我自己写了一个控件,
一开始是从TEdit继承下来的,
后来发现用TypInfo.pas中的
IsPublishedProp函数不能找到它的OnChange事件,
原因我知道了,是因为我没有Published property OnChange;
但是因为是从TEdit继承下的,所以这个事件还是在事件列表中的,
只是用IsPublishedProp个找不到罢了,
所以我后将它从TCustomEdit上继承下来了,
并在Published中加入了property OnChange等,
并重新编译安装。
但我发现在一个界面上原来有的这个控件还是不能用IsPublishedProp发现OnChange,
但后来放上去的控件就可以用IsPublishedProp发现OnChange事件,
请问为什么?
我已经将程序的Dcu文件全部删除,并完全编译了程序。
 
把包卸掉,重新加载试试。
 
我试过了,
Delphi也关掉了重新启动!
但没有用!
 
因为已经做了很多界面了,所以不想一个个将原来的控件删掉了再得新做一遍!
 
兄弟们快帮忙啊!
 
小隐绝招,不知有没有效:
1、View as Text.
2、Save
3、View as Form.
试试看吧!
 
搞定了!
谢谢大家关心,
原来问题出在这里:
for i:=0 to ControlCount-1 do
if IsPublishedProp(Controls,'OnChange') then
SetMethodProp(Controlsi],'OnChange',TMethod(ChangeEvent));

原来我原有的控件放在一个Panel上,
它不包含在self.Controls中!
 
多人接受答案了。
 
后退
顶部