He mi bruja clase personalizada se deriva de TButton:OnClick anulación evento
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;
en el constructor añadí:
constructor TLoginButton.Create(AOwner: TComponent);
begin
inherited;
fOnClick := OnClick;
OnClick := OnClickResult;
end;
Pero cuando hago clic en el botón no está disparando OnClickResult, lo que soy Estoy haciendo mal? ¿Es posible "anular" el controlador de eventos OnClick o debería ocultarlo y hacer, por ejemplo, el evento OnResultClick?
> ¿qué estoy haciendo mal? Sucede, porque el controlador de evento OnClick real se asigna después de que el constructor haya terminado de ejecutarse. En el método cargado. Pero es mucho mejor anular el evento Click de TButton, como se sugiere más abajo, en lugar de jugar con controladores de eventos. Pero si desea asignar su controlador de eventos desde el componente, debe asignarlo después de que se ejecute el método TComponent.Loaded. –
@ Aleksey Gracias, es bueno saber – JustMe
Los eventos están hechos para ser utilizados por la aplicación que utiliza su clase/componente, para no consumirse por sí mismo. –