Вы могли бы сделать две вещи, вы могли бы либо создать действие и связать его с кнопкой, либо вы могли бы создать такую функцию:
void __fastcall TForm1::DynButtonClick(TObject *Sender)
{
// Find out which button was pressed:
TButton *btn = dynamic_cast<TButton *>(Sender);
if (btn)
{
// Do action here with button (btn).
}
}
Вы связываете его с экземпляром кнопки, устанавливая свойство OnClick btnDecToBin->OnClick = DynButtonClick
. Обратите внимание, что функция находится внутри формы Form1. Это будет работать из-за природы замыканий (специфичное для компилятора дополнение). Проблема возникает, если вы удалите Form1
до formQuiz
без удаления ссылки на событие нажатия. Во многих случаях может быть более чистым решением использовать Action в этом случае.
Редактировать: С другой стороны, если у вас есть стандартный макет для ваших тестов, вы можете создать пользовательский класс TQuizForm
, наследующий от TForm
. Таким образом, вам не придется связывать событие каждый раз, когда вы создаете форму.