In dem Punkt verstehe ich das Verhalten von Delphi-Anwendungen ehrlich gesagt auch nicht ganz.
Trotzdem gibt es eine Lösung für dein Problem.
Verwende wie schon von Matze/Mirilin beschrieben eine Variable BeendenErlaubt in OnCloseQuery. Dann musst du nur noch dafür sorgen, dass sie auch beim Beenden durch Windows auf true gesetzt wird:
Delphi-Quellcode:
procedure TForm1.AppMessage(var Msg: TMsg; var Handled: Boolean);
begin
if Msg.message = WM_CLOSE then
BeendenErlaubt := true;
Handled := false;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnMessage := AppMessage;
end;
"Electricity is actually made up of extremely tiny particles called electrons, that you cannot see with the naked eye unless you have been drinking." (Dave Barry)