Есть ли способ использовать одну процедуру для нескольких кнопок в Паскале?
Я ищу способ использовать одну процедуру для нескольких кнопок. Это для теста, как вы должны нажать кнопку 1 для вопроса 1, но скопировать и вставить весь код для 36 кнопок и изменить переменные для 36 кнопок не очень интересно для всех.
Поэтому я подумал, что что-то вроде этого будет возможно:
procedure TForm1.Button[x]Click(Sender: TObject);
begin
DoTask[x];
end;
Х является переменной.
Возможно ли что-то подобное или есть другие способы получить тот же результат?
1 ответ
Самый простой способ сделать это:
Пронумеруйте кнопки, используя
Tag
свойство в Инспекторе объектов (или в коде, когда они создаются), чтобы легко отличать их друг от друга. (Или назначьте значение, которое вы хотите передать вашей процедуре / функции при нажатии этой кнопки.)Создайте один обработчик событий и назначьте его всем кнопкам, которые вы хотите обрабатывать одним и тем же кодом.
Sender
Параметр, который получает событие, будет кнопкой, по которой вы нажали, и которую затем вы можетеTButton
,procedure TForm1.ButtonsClick(Sender: TObject); var TheButton: TButton; begin TheButton := Sender as TButton; DoTask(TheButton.Tag); end;