Folgendes solltest du doch jetzt lösen können:
Wenn du wie in meinem Beispielprojekt deinem MainForm eine WMQueryEndSession verpasst kannst du bei WM_QUERYENDSESSION ja zuerst eine Boolsche Variable setzen. Der
Trick ist
erst die Variable setzten und
dann erst inherited auf zu rufen
Delphi-Quellcode:
procedure TMainForm.WMQueryEndSession(var Message: TMessage);
begin
FWmQueryEndsession := TRUE;
inherited;
end;
Wenn du jetzt in deine CloseQuery kommst dort einfach nur abfragen ob die Var gesetzt ist. Wenn ja, dann kommt der Aufruf zum schließen wohl nicht vom Anwender per [X]-Knopf sondern vom System wegen Abmelden / Runterfahren.
Denn du willst es ja glaube ich genau so, oder? ->
Zitat von
The_Unknown:
Ich möchte, wenn ich das MainForm schließe, dass eine Nachricht kommt "Achtung: Das Programm ist immernoch geöffnet, nur dass es jetzt neben der Systemuhr ist..." (die Nachricht kommt natürlich nur 1x und dann nie wieder). Wenn nun allerdings der User herunterfährt und das Hauptfenster ist noch offen und die Meldung wurde noch nie angezeigt, dann kommt die Meldung beim Herunterfahren, was etwas unglücklich ist.
Greez, Chris