我动态生成了一组按扭bttn:array[1..n]of Tbutton,但是怎么把它的onclick事件赋给其他过程并把按扭下标信息i传递过去呢?

解决方案 »

  1.   

    OnClick事件中的Sender参数就是触发这个事件的按钮。
    如果你在生成的时候写
    bttn[i].Tag := i;
    那么在onclick事件中,这么得到i的值:
    (Sender as TButton).Tag
      

  2.   

    可以借助Bttn的Tag来标志:
    for i:=0 to n do
    begin
      Bttn[i]:=TButton.Create(Self);
      Bttn[i].Tag:=i;
      Bttn[i].OnClick:=btnClick;
    end;
    procedure Form1.btnClick(Sender:TObject);
    begin
      ShowMessage(Format('No.%d button was clicked',[(Sender as TButton).Tag]));
    end;