有没有办法在 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 是变量。

有没有可能或者有其他方法可以获得相同的结果?

最简单的方法是:

  1. 在对象检查器(或在创建它们时在代码中)使用 Tag 属性 为按钮编号,以便轻松区分它们。 (或者在单击该按钮时将要传递的值分配给 procedure/function。)

  2. 创建一个事件处理程序,并将其分配给您希望由同一代码处理的所有按钮。

  3. 事件接收的 Sender 参数将是被单击的按钮,然后您可以将其转换为 TButton.

    procedure TForm1.ButtonsClick(Sender: TObject);
    var
      TheButton: TButton;
    begin
      TheButton := Sender as TButton;
      DoTask(TheButton.Tag);
    end;