Delphi/Dynamiczne tworzenie komponentów - rozwiązanie

Z Wikibooks, biblioteki wolnych podręczników.

Rozwiązanie zadania[edytuj]

Poniższy program tworzy po każdorazowym kliknięciu przycisku nową etykietę.

W trybie edytowania programu dodaj przycisk (z palety komponentów) i dodaj mu obsługę zdarzenia OnClick. Podobnie dodaj zdarzenie OnCreate dla formularza.

unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
y: Integer; // zmienna zawierająca współrzędną Y każdej nowej etykiety
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
y:=10; // początkowa wartość y
end;
procedure TForm1.Button1Click(Sender: TObject);
var
etykieta: TLabel;
begin
etykieta:=TLabel.Create(self); // utworzenie etykiety
with etykieta do begin
Left:=20; // współrzędna x etykiety
Top:=y; // współrzędna y etykiety
parent:=Self; // rodzic etykiety - TForm1
Visible:=True; // etykieta widoczna
Caption:='Etykieta'; // tekst na etykiecie
end;
y:=y+20; // następna etykieta będzie niżej
end;
end.

Zdarzenie OnCreate formularza zostało wykorzystane tylko do zainicjowania zmiennej y. Ta zmienna zawiera współrzędną, pod którą pojawi się nastepna etykieta.

(powrót do kursu)