我有我的自定義類巫婆從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