Zur Not geht das:
Delphi-Quellcode:
while (not frmGame.return) and (not Application.Terminated) do
begin
frmGame.Delay(50);
Application.HandleMessage;
end;
Du solltest aber nochmal dein Konzept überdenken
edit://
Zitat von
richie:
mir geht es weniger darum, die Schleife zu Beenden, als vielmehr zu erfahren, warum kein Event ausgeführt wird.
Es wird schon das Event aufgerufen.
Nur was wird in diesem gemacht? Genau, es wird einfach nur Application.Terminated auf True gesetzt, weiter nix! Das wäre in einem "normalen" Programm auch ausreichend, weil ein "normales" Programm so aussieht:
Delphi-Quellcode:
repeat
try
HandleMessage;
except
HandleException(Self);
end;
until Terminated;
Wenn nun Terminated = True wird die Schleife verlassen und das Programm beendet.
In deinem Programm ist er jetzt aber nicht mehr in dieser Schleife sondern hängt in deiner Schleife fest die sich eben nicht um Terminated kümmert.