2015-04-19 3 views
0

Я создаю компонент и добавляю к нему Tbutton. сейчас я хочу создать событие OnClick для моего компонента, который выполняется, когда пользователь нажимает кнопку моего компонента во время выполнения Как я могу это сделать?Использование события Onclick кнопки внутри компонента

+0

Это очень широкий вопрос. Пожалуйста, сушите его, если вы хотите получить хороший ответ. Кроме того, этот сайт работает лучше всего, если вы покажете другим пользователям, что вы пробовали до сих пор ... – Kris

+0

«Я создаю компонент и добавляю к нему Tbutton». Это крайне расплывчато. Пожалуйста, предоставьте подробную информацию, включая достаточный код для понимания. Это будет означать, что вам нужно больше времени работать над своим вопросом. Мое эмпирическое правило заключается в том, что чем больше времени вы тратите на написание хорошего вопроса, тем лучше ответ и тем больше вы будете учиться. –

+1

См. [Обработчик событий OnClick для управления в пользовательском компоненте не работает] (http://stackoverflow.com/q/23046743/576719). –

ответ

1

@ Ответ LU_RD - это, вероятно, то, что вы ищете.

Я написал небольшой пример, который должен быть похож на то, что вы делаете.

interface 

TMyComponent = class(TCustomControl) 
private 
    embeddedButton: TButton; 
    fOnButtonClick: TNotifyEvent; 
    procedure EmbeddedButtonClick(Sender: TObject); 
protected 
    procedure DoEmbeddedButtonClick; virtual; 
public 
    constructor Create(AOwner: TComponent); override; 
published 
    property OnButtonClick: TNotifyEvent read fOnButtonClick write fOnButtonClick; 
end; 

implementation 

// Attach embedded button event handler onto embedded button 
constructor TMyComponent.Create(AOwner: TComponent); 
begin 
    // .. other code 
    embeddedButton.OnClick := EmbeddedButtonClick; 
    // .. more code 
end; 

// EmbeddedButtonClick fires internal overridable event handler; 
procedure TMyComponent.EmbeddedButtonClick(Sender: TObject); 
begin 
    // If you want to preserve the Sender, extend this method 
    // with a sender argument. 
    DoEmbeddedButtonClick; 
end; 

procedure TMyComponent.DoEmbeddedButtonClick; 
begin 
    // Optionally if you need to do additional internal work 
    // when the button is clicked, you can do it here. 

    // Check if event handler has been assigned 
    if Assigned(fOnButtonClick) then 
    begin 
    // Fire user-assigned event handler 
    fOnButtonClick(Self); 
    end; 
end; 
+0

Очень хорошо большое спасибо ** Mr. Андерсон ** ваш код очень полезен – Fayyaz

Смежные вопросы