procedure TForm1.Button1Click(Sender: TObject);
var
  Button2:TButton;
begin
  Button2:=TButton.Create(self);
  Button2.Parent:=Form1;
  Button2.Top:=0;
  Button2.Left:=0;
  Button2.Width:=100;
  Button2.Height:=50;
  Button2.Show;
end;

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      Button2:TButton;
      myclick:tnotifyevent;
    begin
      Button2:=TButton.Create(self);
      Button2.Parent:=Form1;
      Button2.Top:=0;
      Button2.Left:=0;
      Button2.Width:=100;
      Button2.Height:=50;
      Button2.Show;
      myclick:=button2click;
      button2.onclick:=myclick;
    end;procedure button2click(sender:tobject);
    begin
      showmessage('动态创建button2的click事件');
    end;
      

  2.   

    修改一下
    procedure TForm1.Button1Click(Sender: TObject);
    var
      Button2:TButton;
      myclick:tnotifyevent;
    begin
      Button2:=TButton.Create(self);
      Button2.Parent:=Form1;
      Button2.Top:=0;
      Button2.Left:=0;
      Button2.Width:=100;
      Button2.Height:=50;
      Button2.Show;
      myclick:=button2click;
      button2.onclick:=myclick;//或者直接赋值button2.onclick:=button2click;
    end;procedure tform1.button2click(sender:tobject);  //要申明是tform1的方法
    begin
      showmessage('动态创建button2的click事件');
    end;
      

  3.   

    如果是用循环做了10个BUTTON(BUTTON1-BUTTON10),且这10个BUTTON的事件分别是EV1-EV10怎么办?
      

  4.   

    for I := 0 to ACount - 1 do
      with TButton.Create(AOwner) do
        begin
          Parent := AOwner;
          Height := 21;
          Width := 59;
          Left := 282;
          Top := 8 + I * (Height + 4);
          Font.Name := '宋体';
          Font.Size := 9;
          Name := Format('ACBbut%d', [I + 1]);
          Caption := Format('ACBbut%d', [I + 1]);
          OnClick := //<------------------------------------这里怎么办?
          tag := I+1;
          Show;
        end;
      

  5.   

    写成一个好了button2.onclick:=button2click;procedure tform1.button2click(sender:tobject);  //要申明是tform1的方法
    begin
      if(sender as TButton).XXX 
        ……
    end;
    如果功能类似,连if都不用
    比如说上面的例子
    procedure tform1.button2click(sender:tobject);  //要申明是tform1的方法
    begin
      showmessage('动态创建'+(sender as TButton).Name+'的click事件');
    end;