Guten Morgen Freunde der Kunst,
beim Beenden meines Programmes über das X rufe ich eine Prozedur auf, jedoch kommt es stattdessen zu einem stack overflow an der stelle.
Delphi-Quellcode:
procedure TForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
ButtonExitClick(self);
action := caNone;
end;
procedure TForm.ButtonExitClick(Sender: TObject);
var intDialogResult:integer;
begin
if (length(MainRichEdit.text) > 0) and (bolsaved = false) then
begin
intDialogResult := MessageDlg('Möchten Sie die Änderungen speichern?', mtWarning,
[mbYes,mbNo,mbCancel], 0);
case intDialogResult of
6: begin
SaveAsButtonClick(self);
end;
7: begin
ApoTabThemen.Close;
ApoTabPPP.Close;
close;
end;
end;
end
else
begin
ApoTabThemen.Close;
ApoTabPPP.Close;
close;
end;
end;
Das Programm prüft also beim schließen durch das X ob sich in einem RichEdit ein Text befindet, der noch nicht gespeichert wurde. Nun sollte die ButtonExitClick Prozedur aufgerufen werden die das prüft und einen Dialog aufruft. Falls sich nichts in dem RichEdit befindet bzw. schon gespeichert wurde, dann soll das Programm einfach beendet werden können, andernfalls ruft es zum speichern auf. Warum kommt es hier zu einem stack overflow und wie kann ich das lösen?
Die ButtonExitClick wird auch von einem speedbtn ausgelöst, hier funktioniert es ohne Probleme.
Danke