有没有办法在Pascal中为多个按钮使用ONE程序?

时间:2015-01-05 18:49:20

标签: variables event-handling pascal lazarus procedures

我正在寻找一种方法来为多个按钮使用一个程序。这是一个测验,就像你必须按下问题1的按钮1,但复制和粘贴36个按钮的整个代码并更改36个按钮的变量对任何人来说都不是很有趣。

所以我认为这样的事情是可能的:

procedure TForm1.Button[x]Click(Sender: TObject);
begin
  DoTask[x];
end;

X是变量。

这样的事情是可能的,还是有其他方法可以获得相同的结果?

1 个答案:

答案 0 :(得分:6)

最简单的方法是:

  1. 使用Object Inspector中的Tag属性(或者在创建它们时使用代码)对按钮进行编号,以便轻松区分它们。 (或者在单击该按钮时指定要传递给过程/函数的值。)

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

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

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