button中的代码:
begin
  form2 := tform2.create(self);
  try
    form2.show;//或form2.showmodal;
  except
    form2.free;
  end;
end;
注意:别忘了在form的destroy事件中form2.free

解决方案 »

  1.   

    MyButtonClick: TNotifyEvent;
    procedure TForm1.MyButtonClick(Sender: TObject);
    begin
      form2.show;
    end;
    然后
    button1.onclick := MyButtonClick;
    其他按钮类似
      

  2.   

    在窗体中写一个窗体的过程。
    然后把你所动态建立的按钮的onclick赋值了这个过程就可以了。
    比如:
    procedure tform1.dothing(sender:tobject);
    begin
    //do your thing
    end;
    button1.onclick:=dothing;
    注意,这个过程要以sender:tobject为形参.
      

  3.   

    private
        { Private declarations }
        procedure MyClick(Sender: TObject);
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    var i:integer ;
      B_button:TButton ;
    begin
         for i:=1 to 10 do
         begin
             B_button:=Tbutton.Create(nil) ;
             B_button.Parent := Panel1 ;
             B_button.Name := 'B_But' + IntToStr(i);
             B_button.Top := 2 ;
             B_button.Left := (B_button.Width)*(i-1) ;
             B_button.OnClick := MyClick ;
         end;
    end;procedure TForm1.MyClick(Sender: TObject);
    begin
            ShowMessage((Sender as TButton).Name);
    end;
    end.
      

  4.   

    private
        { Private declarations }
        procedure MyClick(Sender: TObject);
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    var i:integer ;
      B_button:TButton ;
    begin
         for i:=1 to 10 do
         begin
             B_button:=Tbutton.Create(nil) ;
             B_button.Parent := Panel1 ;
             B_button.Name := 'B_But' + IntToStr(i);
             B_button.Top := 2 ;
             B_button.Left := (B_button.Width)*(i-1) ;
             B_button.OnClick := MyClick ;
         end;
    end;procedure TForm1.MyClick(Sender: TObject);
    begin
            {ShowMessage((Sender as TButton).Name);}
            form2.show;
    end;
    end.
      

  5.   

    通过TBUTTON的tag属性来判断该执行什么代码
    var
       button :array [0..15] of Tbutton;
       I: Integer;
    begin
       for I ;= 0 to 15 do
       begin
         button[I] := tbutton.create(...);
         ...
         ...
         button[I].tag := I; 
         button[I].onclick := myclick;
       end;
    end;procedure form1.myclick(Sender: TObject);
    begin
      case tbutton(sender).tag of
         0: form2.show;
         ...
         ...
      end;
    end;