Tworzenie nowych obiektów na formie kodem

0

Jak dodać nowy element na formę kodem? Chodzi mi o to by dopiero po naciśnięciu jakiegoś przycisku albo co, tworzył mi się nowy obiekt np. TImage.

0

na formatce:
Lb:TLabel;
pod przyciskiem
Lb:=TLabel.Create(Self);
Lb.Caption:='Abc';
Lb.Top:=4;
Lb.Left:=4;
Lb.Parent:=Self; // może być też jakiś Panel czy GroupBox

0

Dzięki, działa ;)

0

A jak dodać eventy takiemu elementowi?? Np.: OnClick??

0

tak sobie trochę tu kompinowałem i znalazłem, że mogę dopisać sobie coś takiego Lb.OnClick i w nawiasie ustawić parametr, tylko nie wiem co wpisać w tym nawiasie

0

Stworzyć procedurę:
procedure TForm1.LbOnClick(Sender:TObject);
begin
//
end;
podpiąc:
Lb.OnClick:=LbOnClick;

0

Dzięki!! Zostałem nakierowany na dobre tory i dalej już uda mi się poradzić z tym samemu ;)

0

No może jednak nie do końca - a jeśli stworzę kilka obiektów i do nich chcę osobno przypisać operacje??

0

Przypisać musisz osobno ale możesz podpiąć tą samą procedurę:

Lb1.OnClick:=LbOnClick; 
Lb2.OnClick:=LbOnClick;
procedure TForm1.LbOnClick(Sender:TObject);
begin
   if Sender=Lb1 then ...
   else if Sender=Lb2 then
end;

lub też użyć Tag:

Lb1.OnClick:=LbOnClick; 
Lb1.Tag:=1;
Lb2.OnClick:=LbOnClick;
Lb2.Tag:=2;
procedure TForm1.LbOnClick(Sender:TObject);
begin
   case TLabel(Sender).Tag of
     1: ...
     2: ...
   end;
end;

Zresztą nawet tworzyć możesz w tablice:

Tb:array[0..5]of TLabel;
for I:=0 to 5 do
begin
   Tb[I]:=TLabel.Create(Self);
   Tb[I].Parent:=Self;
   Tb[I].Tag:=I;
   Tb[I].OnClick:=LbOnClick;
end;
0

aha, ok

0
_13th_Dragon napisał(a):

Zresztą nawet tworzyć możesz w tablice:

nawet tak już miałem :D

1 użytkowników online, w tym zalogowanych: 0, gości: 1