Events 具有多个发件人的事件
如何创建单击四个按钮中任何一个按钮的事件,即避免将相同的代码粘贴到每个按钮的OnClick事件中?我在谷歌发现的唯一一件事是,它有一个(多播)功能。如果它真的存在,你能给我提供一些例子吗?如果没有,你能起草一份吗?假设按钮1->OnClick已经分配:Events 具有多个发件人的事件,events,design-patterns,event-handling,c++builder,Events,Design Patterns,Event Handling,C++builder,如何创建单击四个按钮中任何一个按钮的事件,即避免将相同的代码粘贴到每个按钮的OnClick事件中?我在谷歌发现的唯一一件事是,它有一个(多播)功能。如果它真的存在,你能给我提供一些例子吗?如果没有,你能起草一份吗?假设按钮1->OnClick已经分配: Button2->OnClick = Button1->OnClick Button3->OnClick = Button1->OnClick Button4->OnClick = Button1->OnCli
Button2->OnClick = Button1->OnClick
Button3->OnClick = Button1->OnClick
Button4->OnClick = Button1->OnClick
您可以将相同的处理程序分配给所有四个按钮
OnClick
事件。事件的Sender
参数将告诉您每次触发事件的按钮。例如:
void __fastcall TMyForm::ButtonClick(TObject *Sender)
{
TButton *btn = static_cast<TButton*>(Sender);
ShowMessage("You clicked on " + btn->Name);
}
void __fastcall TMyForm::ButtonClick(TObject *Sender)
{
TButton *btn = static_cast<TButton*>(Sender);
switch (btn->Tag)
{
...
}
}
为什么要使用Tag属性来区分按钮,而不仅仅是比较静态的发送器和指向特定TButton的指针呢?@SamuliHynönen:当然也可以这样做,但每个按钮都需要单独的
if
语句。使用标记
,可以执行诸如使用开关
语句、索引数组等操作。这实际上取决于事件处理程序的代码实际执行的操作。