var Button:Array[0..9]of TButton;
for I:=0 to 9 do
 begin
   Button[i]:=TButton.Create(self);
   ........
   Button[i].Parent:=Self;
   Button[i].OnClick:=BtnClick;
 end;procedure BtnClick(Sender:Tobject);
begin
  if Sender=Button[1] then // 按了 Button[1] ;
  ........
end;

解决方案 »

  1.   

    当然可以啊!unit Main;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls;type
      TForm1 = class(TForm)
        procedure FormCreate(Sender: TObject);
        procedure ButtonClick(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.DFM}var
      Buttons: array[1..11] of TButton;procedure TForm1.ButtonClick(Sender: TObject);
    var
      strButtonName: string;
    begin
      strButtonName := TButton(Sender).Name;
      ShowMessage(strButtonName);
    end;procedure TForm1.FormCreate(Sender: TObject);
    var
      I: Integer;
    begin
      for I := Low(Buttons) to High(Buttons) do
      begin
        Buttons[I] := TButton.Create(Self);
        Buttons[I].Name := 'Button' + IntToStr(I);
        Buttons[I].Caption := 'Button' + IntToStr(I);
        Buttons[I].Left := 100;
        Buttons[I].Top := I * 30;
        Buttons[I].Parent := Self;
        Buttons[I].OnClick := ButtonClick;
      end;
    end;end.