C
cxjlike
Unregistered / Unconfirmed
GUEST, unregistred user!
代码如下:
Txxx = class(TComponent)
private
FOnCreate:TNotifyEvent;
public
constructor Create(AOwner: TComponent); override;
published
property OnCreate:TNotifyEvent read FOnCreate write FOnCreate;
end;
.............
constructor Txxx.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
if Assigned(FOnCreate) then
FOnCreate(self); //此时判断为假,事件无法被执行.
//我想,因为此时 .dfm 中保存的值 OnCreate 的方法指针,还没有读出,
//所以认为此事件未设置.
//可是,为什么 TForm.OnCreate() 可以实现?
//观察了TForm的代码,也没看懂,请各位献计
end;
换句话说,在构造器中,还不能访问到此对象实例在IDE中被设置的值.不但方法指针,其它属性也是.比如在IDE中设置Tag=5,在此处也读不出这个5.
如果能主动调用某方法,将保存在 dfm 中的值读出来应该就能解决问题了.
可怎么读?
Txxx = class(TComponent)
private
FOnCreate:TNotifyEvent;
public
constructor Create(AOwner: TComponent); override;
published
property OnCreate:TNotifyEvent read FOnCreate write FOnCreate;
end;
.............
constructor Txxx.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
if Assigned(FOnCreate) then
FOnCreate(self); //此时判断为假,事件无法被执行.
//我想,因为此时 .dfm 中保存的值 OnCreate 的方法指针,还没有读出,
//所以认为此事件未设置.
//可是,为什么 TForm.OnCreate() 可以实现?
//观察了TForm的代码,也没看懂,请各位献计
end;
换句话说,在构造器中,还不能访问到此对象实例在IDE中被设置的值.不但方法指针,其它属性也是.比如在IDE中设置Tag=5,在此处也读不出这个5.
如果能主动调用某方法,将保存在 dfm 中的值读出来应该就能解决问题了.
可怎么读?