如何触发动态创建的按钮的事件?

解决方案 »

  1.   

    自定义事件
    例如 :
    produce MyClick (Sender : TObject);
    produce Button1.Click(Sender : TObject);
    produce MyClick(Sender : TObject);
    begin
      ShowMessage(TComponent(Sender).Name);
    end;produce Button1.Click(Sender : TObject);
    var
      But : TButton;
    begin
      But := TButton.Create(self);
      But.Captiong := '确定';
      But.OnClick := MyClick;   //这句就是
    end;随手写的没调试过不过应该没什么问题
      

  2.   

    我的理解应该是这样:
    procedure TMainForm.Button1Click(Sender: TObject);
    begin
      ShowMessage('Button1.OnClick event occurs!');
    end;procedure TMainForm.Button2Click(Sender: TObject);
    begin
      Button1Click(Button1);
    end;
      

  3.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ExtCtrls, StdCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        Panel1: TPanel;
        procedure Button1Click(Sender: TObject);
        procedure btnclick(sender:tobject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
     var
     i:integer;
     j:integer;
     btn:array of tbutton;
    begin
     setlength(btn,100);
     j:=0;
     for i:=0 to 16 do
     begin
       if (i=(5*j)+5) and (i<>0) then j:=j+1;
       btn[i]:=tbutton.Create(self);
       btn[i].Caption :='button' +inttostr(i);
       btn[i].Width:=50;
       btn[i].Height:=50;
       btn[i].Top:=j*(btn[i].Height+10) ;
       btn[i].Left:= (i-5*j)*btn[i].Width+10;
       btn[i].Parent:=self.Panel1 ;
       btn[i].OnClick:=btnclick;
     end;
    end;
    procedure tform1.btnclick(sender:tobject);
    var
    a:string;
    begin
      a:= tbutton(sender).Caption  ;
      application.MessageBox(pchar(a),'提示!');
    end;end.