Delphi/Dynamiczne tworzenie komponentów - rozwiązanie
< Delphi
Rozwiązanie zadania
edytujPoniż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;
- TForm1 = class(TForm)
- 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.