OnClose arbeitet fehlerhaft?
-
Hi.
Ich denke zwar eher das ich aufn Holzweg bin..... aber vielleicht verrät mir jemand ja die Lösung.
Also..... ich habe eine Hauptform und rufe per Button eine 2. Form auf.
Beim beenden meines Programmes möchte ich das die Position wo die 2. Form zuletzt stand gespeichert wird.Das mache ich momentan dadurch das ich in die OnClose der 2. Form in eine INI schreibe was auch super klappt.
Das Problem ist jetzt das wenn ich das Programm beende indem ich das Hauptfenster schliesse er nicht in die OnClose vom 2. Fenster geht.
Solange ich das 2. Fenster per Hand schliesse ist alles in Ordnung, aber wenn ich direkt das Hauptfenster schliesse schreibt er nicht in die INI.
Die Frage nun ist A) Wieso? und
wie sinnvollerweise dann?Also Lösung wäre es in die OnClose von der Hauptform zu schreiben. Das möchte ich aber nicht wirklich da es dort nicht reingehört.
-
Lösung:
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action) { Form2->Close(); }
-
Du mußt das in CloseQuery rein tun..
Soviel ich weiß, ist Close() nur eine Methode, die das fenster schließt und dann das CloseQuery aufruft. Und das X. ruft immer CloseQuery auf.

-
@T_B__
Wenn man sehr viele Unterfenster hat, würde dort eine Armada an Einträgen stehen.
Es mag eine Lösung sein, aber eine tolle ist es nicht.@DJ BlackEagle
Nope. Das bringt es leider auch nicht. Auch OnCloseQuery scheint beim CBuilder5 einfach übergangen zu werden.
-
Und was ist mit OnDestroy() ???
-
Argh, an OnDestroy habe ich ja nun garnicht gedacht.
Noch nie nötig gewesen es zu benutzen
Danke dir "DerAltenburger". So klappts nun endlich

-
Kann man das schließen eines Fensters auch irgendwie aufhalten? Wenn man z.B. auf das X klickt, und dann in einer MessageBox auf Abbrechen, dann soll das Fenster ja nicht geschlossen werden.
-
Hallo
- FormCloseQuery
- CanCloseMfG
Klaus
-
Ah, vielen Dank.