生成一组动态按钮,每个按钮打开不同的Form,怎么写?请教高人

解决方案 »

  1.   


      TForm1 = class(TForm)
        btn1: TButton;
        procedure btn1Click(Sender: TObject);
      private
        { Private declarations }
        procedure btnClick(Sender: TObject);
      public
        { Public declarations }
      end;procedure TForm1.btnClick(Sender: TObject);
    begin
      if Sender = nil then
        Exit;
      case (Sender as TButton).Tag of
        1:
          begin
            ShowMessage(TButton(Sender).Caption);
          end;
        2:
          begin
            ShowMessage(TButton(Sender).Caption);
            //自己来写   YourForm := TYourForm.Create(nil); YourForm.ShowModal;  YourForm.Free;
          end;
        3:
          begin
            ShowMessage(TButton(Sender).Caption);
            //自己来写   YourForm := TYourForm.Create(nil); YourForm.ShowModal;  YourForm.Free;
          end;
        4:
          begin
            ShowMessage(TButton(Sender).Caption);
            //自己来写   YourForm := TYourForm.Create(nil); YourForm.ShowModal;  YourForm.Free;
          end;
      end;
    end;procedure TForm1.btn1Click(Sender: TObject);
    var
      i, lstTop:Integer;
    begin
      lstTop := 100;
      for i := 1 to 5 do
      begin
        with TButton.Create(self) do
        begin
          Left := 100;
          Top := lstTop;
          Tag := i;
          lstTop := lstTop + Height + 10;
          Parent := Form1;
          Caption := 'botton' + IntToStr(i);
          OnClick := btnClick;
        end;
      end;
    end;
      

  2.   

    楼上写的很明白了,利用btn的tag进行判断就可以了