Hallo,
jetzt, wo mein Projekt abgeschlossen schien, stellt sich doch noch die ein oder andere Macke heraus:
Es gibt Benutzer, die ein Programm nicht über die im Programm vorgesehenen Befehle beenden, sondern über die Windows-Taskleiste. Das funktioniert bei meinem Projekt fehlerfrei nur dann, wenn nur das Hauptfenster geöffnet ist. Ich habe in meinem Programm aber neben dem Hauptfenster (fsMDIForm) noch mehrere fsMDIChild- und ein normales Fenster (fsNormal). Dieses spezielle Fenster kann ich nicht zum Child machen, weil es über 2 Monitore geht.
Mit Hilfe des Forums habe ich eine Lösung für die Childfenster gefunden, bei der ich mir aber auch nicht sicher bin, ob das der Weisheit letzter Schluß ist. In das FormClose-Ereignis des Hauptformulars habe ich geschrieben:
Delphi-Quelltext
1:
| for i := MDIChildCount - 1 downto 0 do MDIChildren[i].Close; |
Das scheint das Problem zu lösen, wenn ein beliebiges Child-Fenster geöffnet ist, aber im Forum habe ich gelesen, daß Close das Fenster nicht wirklich freigibt, sondern nur versteckt, und daß das somit keine saubere Lösung ist. Und für das normale Fenster, das ja auch geöffnet sein könnte, habe ich trotz langer Suche noch keine Lösung gefunden. Ich bräuchte sowas wie:
Delphi-Quelltext
1:
| if speziellesFenster = open then speziellesFenster.close |
Oder gibt es einen besseren Befehl, mit dem alle möglicherweise geöffeten Fenster auf einmal geschlossen werden können.
Danke Ebi