beenden abfragen

W-Stefan

Mitglied
Hi leute, hätte gerne folgendes gewusst:

Ich habe einen kleinen Editor geschrieben (Ja ich weiss, so einen alten blödsinn) und nun möchte ich vor dem Beenden eine Abfrage machen, ob man den Text speichern will oder nicht. Die abfrage soll aber nur kommen, wenn man den Text geändert hat.

Ich habe selbst schon probiert, funktioniert auch, aber es ist eben ewig lang. da müsste es doch einen kürzeren weg geben.

Code:
// Editor beenden
procedure TEditor.FormClose(Sender: TObject; var Action: TCloseAction);
var button: Integer;
begin
  button := 0;
  if Editor.Caption = 'Unbenannt - Editor' then
  begin
    if mem_texteingabe.Text = '' then
    begin
    end else
    begin
      button := Application.MessageBox(PChar('Der Text in der Datei Unbenannt wurde verändert.' + #13 + #13 + 'Aktuelle Änderungen speichern?'), 'Editor', 51);
      if button = 6 then
      begin
        if SaveDialog.Execute then
        begin
          mem_texteingabe.Lines.SaveToFile(SaveDialog.FileName);
        end;
      end;
      if button = 2 then
      begin
        Action := caNone;
      end;
    end;
  end else
  begin
  if mem_texteingabe.Text = memotext then
  begin
  end else
    button := Application.MessageBox(PChar('Der Text in der Datei ' + filename + ' wurde verändert.' + #13 + #13 + 'Aktuelle Änderungen speichern?'), 'Editor', 51);
    if button = 6 then
    begin
      mem_texteingabe.Lines.SaveToFile(filename);
    end;
    if button = 2 then
    begin
      Action := caNone;
    end;
  end;
end;
 
-

Hallo Stefan,
deinen Programmcode in dieser Ereignis-Prozedur würde ich komplett in eine eigene Funktion/Prozedur auslagern, da du sicherlich auch nach anderen Ereignissen speichern willst ( Speichern-Button). Außerdem würde ich eine private Variable - vielleicht vom Typ Boolean - benutzen, um zu kennzeichnen, ob sich der Inhalt in dem Memo verändert hat ( OnChange Ereignis vom Memo ).

Gruß Patrick
 
Zurück