Sprawdzenie czy istnieje komponent

0

Witam,
tworzę dynamicznie komponent TListView po naciśnięciu przycisku (buttonu).


listview := TListview.Create(TabItem3);
listview.Parent := TabItem3; // rodzic przycisku
listview.Align := TAlignLayout.Client;

Jeśli nacisnę go kolejny raz znowu stworzy mi się komponent.
Chciałbym sprawdzić przed naciśnięciem przycisku czy już TListview istnieje i jeśli tak to go usunąć.

Próbowałem z FindComponent ale nie wyszukuje mi komponentu.


 TempComp := TabItem3.FindComponent(TListView));
     if TempComp <> nil then
        showmessage ( 'Znalazłem' );

Proszę o pomoc.

2

Powinieneś Nilować zmienną listview na początku programu; Potem wystarczy sprawdzić czy zmienna jest równa Nil (lub użyć funkcji Assigned) i jeśli tak - stworzyć komponent; A jeśli nie - najpierw zrobić coś z już istniejącym, a dopiero później ewentualnie utworzyć go jeszcze raz;

Czyli w skrócie - np. w konstruktorze formularza (mało kodu podałeś, więc piszę ogólnie) wyzerować zmienną/pole:

listview := nil;

a w zdarzeniu kliknięcia w przycisk użyć poniższego warunku:

if Assigned(listview) then
begin
  // ewentualne końcowe operacje na usuwanym komponencie
  FreeAndNil(listview);
end;

listview := TListView.Create(TabItem3);
// i dalej co tam potrzebujsz zrobić ze świeżym komponentem

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