[Back to DELPHI SWAG index] [Back to Main SWAG index] [Original]
{
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.
[Back to DELPHI SWAG index] [Back to Main SWAG index] [Original]