Problem mit Formular schließen und wieder öffnen
-
Hallo,
ich öffne mit einem Button ein zweites Formular:
if (FormularForm == NULL) { FormularForm = new TFormularForm(this) ; FormularForm->Show() ; }
Wenn ich dieses dann aber wieder schließe, kann ich es nicht erneut über den Button öffnen!
In das OnDestroy-Ereignis von FormularForm habe ich das reingeschrieben:
FormularForm == NULL ;
Hat einer nen TIPP was ich noch vergessen haben könnte oder falsch gemacht habe?
Viele Dank
-
Was soll "FormularForm == NULL;" denn bewirken? ( == ist ein Vergleichsoperator und kein Zuweisungsoperator!)
Wieso schließt Du nicht das Formular einfach mit TForm::Close() und rufst es mit TForm::Show() wieder auf?
-
kann schon mal passieren:
Du hast einen Vergleich gemacht, keine Zuweisung,
Ist das peinnnnnlichhhhh !
Gruß Rudi
-
Ja gut, dann hatte ich bei dem Beispiel gerade == anstatt = , aber trotzdem funktioniert es nicht!
Ob ich nun das Formular mit dem x rechts oben schließe, oder mit Close(), da kommt doch das Gleiche raus!
-
Weil die OnDestroy nur beim Löschen eines Formulars aufgerufen wird. Reines Schließen macht das Form nur unsichtbar, löscht es aber nicht. Gelöscht wird erst wenn die Anwendung beendet wird.
Gruß KK
-
Du erreichst Form = Null ja nicht, wg OnDestroy
//Form dynamisch erzeugen Form2 = new TForm(this); ... void __fastcall TForm1::ButtonOeffnenClick(TObject *Sender) { Form2->Show(); } //--------------------------------------------------------------------------- void __fastcall TForm1::ButtonSchliessenClick(TObject *Sender) { Form2->Close(); }
Kannst Die Form beliebig Öffnen und Schliessen.
-
Hallo
FormularForm ist offenbar der vom Builder generierte statische Zeiger zu TFormularForm. (Zum einen ist dieser Zeiger nicht dazu gedacht, um manuell durch den Quellcode gesetzt zu werden. Zum anderen sollte man weder OnDestroy noch OnCreate benutzen) Das eigentliche Problem ist vermutlich, das du noch einen zweiten Zeiger FormularForm deklariert hast, der den eigentlichen Original-Zeiger überdeckt.
bis bald
akari