具有多个发件人的事件

时间:2014-03-12 23:35:37

标签: events design-patterns event-handling c++builder

如何创建点击四个按钮的任意的事件,即避免将相同的代码粘贴到每个按钮的OnClick事件中?我在Google中找到的唯一一件事是它有(?)pattern(多播)。如果它真的存在,你能不能给我一些例子,如果没有,你可以做一个(草案)吗?

2 个答案:

答案 0 :(得分: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)
    {
        ...
    }
}

答案 1 :(得分:0)

假设已经分配了Button1-&gt; OnClick:

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