2014-03-12 82 views
0

事件如何創建點擊任意四個按鍵,即避免粘貼相同的代碼到每個按鈕的OnClick事件的事件?我在谷歌發現的唯一的事情是,有(?)一個pattern(多播)它。如果它真的存在,請給我舉一些例子,如果不是,你可以製作一份嗎?與多個發件人

回答

2

您可以將相同的處理分配到所有四個按鈕OnClick事件。本次活動的Sender參數會告訴你哪個按鈕,每次觸發事件。例如:

void __fastcall TMyForm::ButtonClick(TObject *Sender) 
{ 
    TButton *btn = static_cast<TButton*>(Sender); 
    ShowMessage("You clicked on " + btn->Name); 
} 

如果你的代碼需要的行爲取決於哪個按鈕被點擊,就可以使用Tag屬性來區分,例如:

void __fastcall TMyForm::ButtonClick(TObject *Sender) 
{ 
    TButton *btn = static_cast<TButton*>(Sender); 
    switch (btn->Tag) 
    { 
     ... 
    } 
} 
+0

爲什麼區分按鈕使用Tag屬性,而不是隻比較static_casted發件人和指向特定TButton的指針? –

+0

@SamuliHynönen:你當然可以做到這一點爲好,但它需要獨立的'每個按鈕if'語句。使用'Tag',你可以不喜歡使用'之開關語句,索引陣列等,這真的取決於事件處理程序的代碼實際上做的事情。 –

+0

感謝您對標籤作爲標識符的建議 – mekkanizer

0

假設Button1->的OnClick已分配:

Button2->OnClick = Button1->OnClick 
Button3->OnClick = Button1->OnClick 
Button4->OnClick = Button1->OnClick 
+0

感謝您的幫助 – mekkanizer