2009. december 7., hétfő
How to create an array of buttons at runtime
Problem/Question/Abstract:
How to create an array of buttons at runtime
Answer:
Here is a unit that creates a row of buttons and a label at run time and displays which button is clicked on. 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;
procedure TForm1.FormCreate(Sender: TObject);
var
loop: integer;
begin
{Size the form to fit all the components in}
ClientWidth := (b * 60) + 10;
ClientHeight := 65;
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
begin
Parent := self;
Caption := IntToStr(loop);
Width := 50;
Height := 25;
Top := 30;
Left := (loop * 60) + 10;
Tag := loop; {Used to tell which button is pressed}
OnClick := ButtonClick;
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.
Feliratkozás:
Megjegyzések küldése (Atom)
Nincsenek megjegyzések:
Megjegyzés küldése