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