我有我的自定义类巫婆从TButton的衍生:OnClick事件覆盖
TLoginResultEvent = procedure (Sender: TObject; LoginResult: boolean) of object;
TLoginButton = class(TButton)
private
fLogin: TLoginChooser;
fOnClick: TLoginResultEvent;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
procedure OnClickResult(Sender: TObject; LoginResult: boolean);
published
property Login: TLoginChooser read fLogin write fLogin;
property OnClick: TLoginResultEvent read fOnClick write fOnClick;
end;
在构造函数中我说:
constructor TLoginButton.Create(AOwner: TComponent);
begin
inherited;
fOnClick := OnClick;
OnClick := OnClickResult;
end;
但是,当我点击它没有发射OnClickResult按钮,我算什么我做错了?是否有可能“重写”OnClick事件处理程序,或者我应该隐藏它,并例如OnResultClick事件?
>我究竟做错了什么? 它发生,因为实际的OnClick事件处理程序是在您的构造函数完成执行后分配的。在加载的方法。 但重写TButton的Click事件会更好,因为建议较低,而不是使用事件处理程序。但是,如果您想从组件内分配事件处理程序,则应在TComponent.Loaded方法执行后分配它。 – 2011-05-16 17:05:33
@Aleksey谢谢,很高兴知道 – JustMe 2011-05-16 17:07:36
使用您的类/组件的应用程序将使用事件,而不是自行使用。 – 2011-05-17 02:43:16