我正在寻找一种将一个过程用于多个按钮的方法。这是针对测验的,例如您必须为问题 1 按下按钮 1,但是复制并粘贴 36 个按钮的整个代码并更改 36 个按钮的变量对任何人来说都不是很有趣。
所以我认为这样的事情是可能的:
procedure TForm1.Button[x]Click(Sender: TObject);
begin
DoTask[x];
end;
X 是变量。
这样的事情是否可能,或者有没有其他方法可以获得相同的结果?
最简单的方法是:
-
使用对象检查器中的
Tag
属性(或在创建按钮时在代码中)对按钮进行编号,以便轻松区分它们。(或者,在单击该按钮时将要传递给过程/函数的值分配给过程/函数。 -
创建一个事件处理程序,并将其分配给要由同一代码处理的所有按钮。
-
事件接收的
Sender
参数将是单击的按钮,然后可以将其转换为TButton
。procedure TForm1.ButtonsClick(Sender: TObject); var TheButton: TButton; begin TheButton := Sender as TButton; DoTask(TheButton.Tag); end;