我在panel上动态产生到了几个speedbutton按钮,当我点击speedbutton按钮时,它会产生什么事件啊,比如我要知道我所要点击的哪个speedbutton的caption值,它会产生什么事件?在线等!

解决方案 »

  1.   

    在Delphi中动态创建按钮,并为其添加相应的事件
    Public
    Procedure OnBtnClick(Sender: TObject);procedure TForm1.FormCreate(Sender: TObject);
    var
      i: integer;
      btn: array[1..4] of TButton;
    begin
       for i:=1 to 4 do
       begin
           btn[i]:= TButton.Create(Self);
           btn[i].Parent:= Form1;
           btn[i].Name:='btn'+IntToStr(i);
           btn[i].Height:= 25;
           btn[i].Width:= 75;
           btn[i].Top:= 10+25*(i-1);
           btn[i].Left:= 10;
           btn[i].Visible:= True;
           btn[i].OnClick:= OnBtnClick;
       end;
    end;procedure TForm1.OnBtnClick(Sender: TObject);
    begin
    if (Sender as TButton).Name='btn1' Then
     ShowMessage('btn1 Click');
    if (Sender as TButton).Name='btn2' Then
     ShowMessage('btn2 Click');
     if (Sender as TButton).Name='btn3' Then
     ShowMessage('btn3 Click');
     if (Sender as TButton).Name='btn4' Then
     ShowMessage('btn4 Click');
    end;
      

  2.   

    显示动态按钮的Caption
    ------知识点:Sender的用法
    在OnBtnClick中加入
    ShowMessage((Sender as TButton).caption)
      

  3.   

    随便写几句。建议多看看Delphi后面隐藏的原理,了解什么控件的来由以及什么是事件等等,以后就不会提这样的问题了。
    type
      TForm1 = class(TForm)
        Panel1: TPanel;
        Button1: TButton;
        SpeedButton1: TSpeedButton;
        procedure Button1Click(Sender: TObject);
      private
        procedure SpeedButtonClick(Sender: TObject);
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    var
      I: Integer;
    begin
      for i := 0 to 9 do
      begin
        with TSpeedButton.Create(nil) do
        begin
          Parent := Panel1;
          Width := 100;
          Height := 20;
          Left := 100*(I mod 5);
          Top := 20*(I div 5);
          Caption := '第'+IntToStr(I)+'个';
          OnClick := SpeedButtonClick;
        end;
      end;
    end;procedure TForm1.SpeedButtonClick(Sender: TObject);
    begin
      if Sender is TSpeedButton then
      ShowMessage((Sender as TSpeedButton).Caption);
    end;