一
一个过客
Unregistered / Unconfirmed
GUEST, unregistred user!
假如我设计一个控件TCompABC,他有一个Active属性,有一个OnActive事件,
我希望当用户设置Active:=true的时候,激活OnActive事件,代码如下:
procedure TCompABC.SetActive(Value:boolean);
begin
if FActive<>Value then
begin
FActive:=value;
if FActive then
if assigned(FOnActive) then FOnActive(self); //问题所在
end;
end;
这段代码看上去没什么问题,但是,当我设计form的时候,我把一个TCompABC控件
拖曳到form上,然后在属性编辑器里面设置Active为true,然后编写了OnActive的代码。
按F9执行的时候并没有执行到我的OnActive代码,跟踪结果显示当控件创建的时候,
该控件的FOnActive属性并没有assigned,或者至少是当Active属性被赋值的时候,
FOnActive还没有被赋值,所以。。。
那么我怎样才能实现我的功能呢?
我希望当用户设置Active:=true的时候,激活OnActive事件,代码如下:
procedure TCompABC.SetActive(Value:boolean);
begin
if FActive<>Value then
begin
FActive:=value;
if FActive then
if assigned(FOnActive) then FOnActive(self); //问题所在
end;
end;
这段代码看上去没什么问题,但是,当我设计form的时候,我把一个TCompABC控件
拖曳到form上,然后在属性编辑器里面设置Active为true,然后编写了OnActive的代码。
按F9执行的时候并没有执行到我的OnActive代码,跟踪结果显示当控件创建的时候,
该控件的FOnActive属性并没有assigned,或者至少是当Active属性被赋值的时候,
FOnActive还没有被赋值,所以。。。
那么我怎样才能实现我的功能呢?