Nein, das ist so nicht ganz passend, denn einen solchen Speicherndialog kann man normalerweise auch abbrechen und kommt dann wieder ins Programm zurück. Das geht so nicht.
Zudem ist die 36 als Zahl statt der entsprechenden (lesbaren) Konstanten ganz übler Programmierstil...
So passt das besser:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
Close; // Löst das Ereignis ja aus
end;
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if RichEdit1.Modified then
case Application.MessageBox('Wollen sie das geänderte Dokument speichern?',
'Frage', MB_ICONQUESTION or MB_YESNOCANCEL) of
IDYES:
if SaveDialog1.Execute then
...
else
CanClose := False;
IDCANCEL:
CanClose := False;
end;
end;
Auf diese Weise wird gefragt, ob gespeichert werden soll, und wenn man das bejaht, den Dialog aber abbricht, wird das Schließen abgebrochen. Ebenfalls wird abgebrochen, wenn man abbrechen drückt.