Formular B ruft über externe Funktion "delete B;" auf - Problem?
-
Hallo allerseits,
Folgende Situation:
Formular A kreiert ein Formular B. Formular B ruft irgendwann eine Funktion von A auf, sagen wirA->Loesche_B()..., die B deleten soll. Mir scheint, dass das nicht gesund ist, auch wenn es zur zeit noch klappt. Schließlich wartet ja B auf das Vollenden der Funktion A->Loesche_B(), oder? meine einzige idee ist jetzt in Loesche_B() einen Timer zu starten, der dann nach Beenden von Loesche_B() im OnTimerEvent B deletet. habe aber die sorge, dass die intervallwahl des timers kritisch ist, da aktionen auf verschiedenen rechnern ja verschieden schnell sind. wie kann ich das eleganter lösen?
Zur Zeit siehts also so aus:
Form B:B::ButtonClick(){ A->Loesche_B(); }und
Form A:A::Loesche_B(){ delete B; }Freue mich auf Feedback!
der oli

-
Vielleicht solltest Du kurz erklären, was Du da genau vorhast? Warum wird das Form manuell erzeugt? Wo wird das Form manuell erzeugt?
Im Regelfall löst man diese Aufgabe, in dem in Form1 ein Zeiger auf Form2 deklariert wird und dieser im Konstruktor / FormCreate von Form1 mit NULL initialisiert wird.
Wenn nun das Form2 benötigt wird, überprüft man, ob der Zeiger NULL ist, wenn ja erzeugt man die Form2, wenn nicht zeigt man sie einfach an.
Im Destruktor von Form1 prüft man dann erneut ob der Zeiger NULL ist, wenn nicht, 'deleteted' man Form2...