Sprawdzenie tekstu komponentu stworzonego dynamicznie.

0

Witam,
stworzyłem dynamicznie komponent TRenctangle a na nim komponent TLabel.

Gdy klikam w komponent TRectangle wywołuje mi się metoda OnClick, w której chciałbym uzyskać teskt z labela.
Jak mogę to zrobić ?

 
while(NOT(FDQuery2.Eof)) do
    begin

    tytul := FDQuery2.Fields[0].AsString;

    tlo := TRectangle.Create(listview);
    tlo.Parent := listview;
    tlo.OnClick := klikniecie_tla;

    napis:=TLabel.Create(tlo);
    napis.Parent:=tlo; // rodzic przycisku
    napis.Text := tytul;

    FDQuery2.Next;
  end;

procedure Form1.klikniecie_tla(Sender: TObject);
begin
   ...
end;
0

Enumerować kontrolki z tego TRectangle rzutując na TLabel albo przez kod w stylu TLabel(TRectangle(Sender).FindComponent('NazwaLabelaNadanegoPrzezName'))....

0

Nie wiem czym jest to TRectangle, jednak jeśli jest to komponent grupujący (działający tak samo jak TPanel lub TGroupBox), to skorzystaj z jego właściwości ControlCount oraz Controls;

Dlaczego Controls, a nie Components? Dlatego że to pierwsze łączy z przyjmijmy tablicą komponentów osadzonych w danym innym komponencie lub formularzu, a to drugie łączy z tablicą wszystkich komponentów na formularzu; U Ciebie Sender zawiera referencję do TRectangle, więc wystarczy przeszukać jego zawartość i po znalezieniu etykiety zwrócić jej Caption;

Wystarczy zwykła pętla For, operatory Is i As (lub twarde rzutowanie) i tyle.

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