【发布时间】:2014-11-20 19:14:15
【问题描述】:
我使用以下代码创建了一个以 TFrame 作为祖先的组件:
type
TCHAdvFrame = class(TFrame)
private
{ Private declarations }
FOnShow : TNotifyEvent;
FOnCreate : TNotifyEvent;
protected
procedure CMShowingChanged(var M: TMessage); message CM_SHOWINGCHANGED;
public
{ Public declarations }
constructor Create(AOwner: TComponent) ; override;
published
property OnShow : TNotifyEvent read FOnShow write FOnShow;
property OnCreate : TNotifyEvent read FOnCreate write FOnCreate;
end;
implementation
{$R *.dfm}
{ TCHAdvFrame }
procedure TCHAdvFrame.CMShowingChanged(var M: TMessage);
begin
inherited;
if Assigned(OnShow) then
begin
ShowMessage('onShow');
OnShow(self);
end;
end;
constructor TCHAdvFrame.Create(AOwner: TComponent);
begin
ShowMessage('OnCreate1');
inherited ;
ShowMessage('OnCreate2');
if Assigned(OnCreate) then
begin
ShowMessage('OnCreate3');
OnCreate(self);
end;
我已经注册了新组件并做了一些测试。 ShowMessage('OnCreate1');和 ShowMessage('OnCreate2');被正确执行但不是 ShowMessage('OnCreate3');
这可以防止在实现 TCHAdvFrame 的新实例期间添加代码。
为什么会这样,我该如何解决?
【问题讨论】:
标签: delphi components