Ach so, jetzt verstehe ich langsam. Also geht es dir sonstwo vorbei, ob der Benutzer nun Alt+F4 oder X gedrückt hat, du willst nur wissen, ob das der Fall war oder dein Abbrechen-Button, der im Endeffekt die Prozedur abbricht, die aber wiederum das Schließen vornimmt. Kann man das ungefähr so zusammenfassen:
Delphi-Quellcode:
begin
while not CancelClicked do begin
DoSomething;
end;
Close;
end;
procedure TMyForm.CancelButtonClick(...);
begin
if MessageDlg(...) = mbYes then begin
CancelClicked := true;
end;
end;
?
Wenn ja, entzieht sich meiner Kenntnis, warum OnCloseQuery nicht so aussieht:
Delphi-Quellcode:
procedure TMyForm.FormCloseQuery(...);
begin
CanClose := true;
if not CancelClicked and not Done then begin
if MessageDlg(...) = mbYes then begin
CancelClicked = true;
CanClose := false;
end
end
end;
Done müsste dann natürlich noch am Ende der Bearbeitung (aber vor dem Close) auf true gesetzt werden. Oder hab ich da einen Denkfehler?