При написании компонентов не следует использовать обработчики событий для реализации пользовательского поведения. Вместо этого вы должны переопределить код, вызывающий эти обработчики событий. В этом случае забудьте о настройке OnClick
. Вместо этого просто добавьте
public
procedure Click; override;
к объявлению вашего класса и реализовать
procedure TLoginButton.Click;
begin
inherited; // call the inherited Click method.
// Do something new.
end;
Обработчики событий должны использоваться разработчиком с использованием компонента. Компонент записи не должен использовать их сам.
Если вы хотите, чтобы пользователь компонента увидел другой метод OnClick, вы должны реализовать это самостоятельно, например
type
TLoginResultEvent = procedure(Sender: TObject; LoginResult: boolean) of object;
...
TLoginButton = class(TButton)
private
FOnClick: TLoginResultEvent;
...
public
procedure Click; override;
...
published
property OnClick: TLoginResultEvent read FOnClick write FOnClick;
...
procedure TLoginButton.Click;
begin
inherited;
if Assigned(FOnClick) then
FOnClick(Self, true); // or false...
end;