我用一个procedure动态生成了一个控件数组,现在需要编写这个控件数组中控件的事件,该怎么写啊?

解决方案 »

  1.   

    差不多就是这个样子
    TMainForm = class(TForm)
    private
      a: array[0..6] of TButton;
      procedure ButtonClick(Sender: TObject);
    public
      procedure CreateButton;
    end;..procedure TMainForm.CreateButton;
    var
      i: Integer;
    begin
      for i := Low(a) to High(a) do
      begin
        a[i] := TButton.Create(Self);
        a[i].OnClick := ButttonClick;
      end; 
    end;
      

  2.   


    1、声明控件数组。
       var arr_btn:array of TButton;
    2、创建控件。
       SetLength(arr_btn,10);
       For i:=0 to 9 do
       begin
         arr_btn[i] := TButton.Create(Form1);
         With arr_btn[i] do
         begin
           Parent := Form1;
           Top :=  ...;
           Left :=  ...;
           Width :=  ...;
           Height :=  ...;
           Caption := ...;
           Visible := true;
           OnClick := ButtonClickSimple;
           Tag := i;
         end;
       end;
    3、编写按钮的处理事件。
    procedure TForm1.ButtonClickSimple(Sender: TObject);
    var i:integer;
    begin
      i := TButton(sender).Tag;
      Case i of
        0: ......;
        1: ......; 
        ......
        ......
      end;
    end;
      注意:这个过程需要在interface中声明。
      

  3.   

    这是一个控件的,控件数组可以仿照来
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, Buttons;type
      TForm1 = class(TForm)
        BitBtn1: TBitBtn;     procedure mycvb(Sender: TObject) ;
        procedure BitBtn1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.BitBtn1Click(Sender: TObject);
    var
     bb:TButton;
    begin
     bb:= Tbutton.Create(self);
     with bb do
     begin
       Parent:=Form1;
       Left:=100;
       Top:=100;
       Caption:='New Button';
       onclick:= mycvb
     end;
    end;procedure TForm1.mycvb(Sender: TObject);
    begin
     ShowMessage('ok');
    end;end.
      

  4.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      ComArrray:array [1..10] of TPicture;
      i:integer;
    begin
      for i:=1 to 10 do
      begin
        ComArrray[i]:=TPicture.Create(self);
        ComArrray.Parent:=self;
        ComArrray.Left:=50;
        ComArrray.Top:=10*i;
        ComArrray.OnClick:=OnClick;
        ComArrray.Visible:=true;
        ComArrray[i].caption:='动态图片'+inttostr(i);
      end;
    end;