Problem ze zwalnianiem dynamicznych komponentów

0

Sprawa wygląda tak:

0

Sytuacja wygląda tak: stworzyłeś w rozdaniu komponenty o nazwach KartaStolxxx. One cały czas są na formie. Są usuwane dopiero podczas zamykania formy (wg kodu, który podałeś). Za drugim razem znowu chcesz na formie umieścić komponenty o nazwach KartaStolxxx - ale one już są, więc wyrzuca błąd. Masz dwa wyjścia:

  1. Na początku CardCreate wstaw taki sam kod, jaki wpisałeś w zdarzeniu OnClose formy (czyli zwalniaj karty z poprzedniego rozdania)

  2. Zamiast tworzyć karty dynamicznie za każdym rozdaniem, twórz je tylko raz i potem pokazuj/ukrywaj za pomocą Show/Hide. Wtedy zarządzanie komponentami będzie prostsze i bardziej efektywne.

0
Ranides napisał(a)

...stworzyłeś w rozdaniu komponenty o nazwach KartaStolxxx. One cały czas są na formie. Są usuwane dopiero podczas zamykania formy (wg kodu, który podałeś). Za drugim razem znowu chcesz na formie umieścić komponenty o nazwach KartaStolxxx - ale one już są, więc wyrzuca błąd.

Tak, faktycznie miałem taki błąd wcześniej, był poprawiony jakiś czas temu (Wcześniej przy zamknieciu formy ze stołem (Uklad) wywoływałem Rozklad.Hide), teraz jest tak:

procedure TUklad.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Rozklad.Close;
end;

Więc prodedura czyszcząca jest wywoływana, poza tym gdyby nie była, to pewnie błąd by wyskakiwał przy pierwszej tworzonej karcie (rozdanie), a nie dopiero przy drugim etapie (tworzenie stołu).

Dynamika musi być, bo jest miu potrzebna w dalszej części projektu..

P.S. Trochę już nad tym siedzę, bawiłem się w debagowanie, wstawiając różne liczniki. Najgorsze jest to, że ilość wykonywanych pętli podczas tworzenia kart i ich zwalniania jest identyczna. Moim zdaniem coś się blokuje, nie wiem co i czemu... :/

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