Contributor: D.F. HARTLEY
{
Here is a unit that creates a row of buttons and a label at run time and
displays which button is clicked on. Thanks go to a number of people who pushed
me in the right direction. Like all things in programing 'it's obvious when you
know how'!
All you need to do is start a new project, then paste all the code below
into Unit1.
-------------------------------------------------------------------------------------
}
unit Unit1;
interface
uses
 SysUtils, WinTypes, WinProcs, Messages, 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}
const
 b = 4; {Total number of buttons to create}
var
 ButtonArray : Array[0..b-1] of TButton; {Set up an array of buttons}
 MessageBox: TLabel; {...and a label!}
procedure TForm1.FormCreate(Sender: TObject);
 var
 loop : integer;
begin
 ClientWidth:=(b*60)+10; {Size the form to fit all the}
 ClientHeight:=65; {components in.}
 MessageBox:=TLabel.Create(Self); {Create a label...}
 MessageBox.Parent:=Self;
 MessageBox.Align:=alTop; {...set up it's properties...}
 MessageBox.Alignment:=taCenter;
 MessageBox.Caption:='Press a Button';
 for loop:= 0 to b-1 do {Now create all the buttons}
 begin
 ButtonArray[loop]:=TButton.Create(Self);
 with ButtonArray[loop] do {Note the use of the with command.}
 begin	 {This lets you leave out the first}
 Parent :=self; {bit of the description and}
 Caption :=IntToStr(loop); {(I think) makes the code easier}
 Width :=50; {to read.}
 Height :=25;
 Top	 :=30;
 Left :=(loop*60)+10;
 Tag	 :=loop; 	{Used to tell which button is pressed}
 OnClick :=ButtonClick;	{The important bit!}
 end;
 end;
end;
procedure TForm1.ButtonClick(Sender: TObject);
 var
 t : Integer;
begin
 t:=(Sender as TButton).Tag;		{Get the button number}
 MessageBox.Caption:='You pressed Button '+IntToStr(t);
end;
end.


AltStyle によって変換されたページ (->オリジナル) /