habe jetzt eine notlösung gefunden wie man ein einfaches undo / redo hinbekommt, ist aber nicht wirklich zufriedenstellend
man nehme noch 2 zusätzliche SynEdits und setze diese auf visible := false
diese werden dann als zwischenspeicher verwendet
mit den undo und redo buttons wird dann dieser code ausgeführt
Delphi-Quellcode:
// Undo
procedure TForm1.ToolButton7Click(Sender: TObject);
begin
SynEdit3.Lines := SynEdit1.Lines; // aktueller text sichern
SynEdit1.Lines := SynEdit2.Lines; // backup einfügen
SynEdit2.Lines := SynEdit3.Lines; // backup durch aktuellen text ersetzen
ToolButton7.enabled := false;
ToolButton9.enabled := true;
end;
// Redo
procedure TForm1.ToolButton9Click(Sender: TObject);
begin
SynEdit3.Lines := SynEdit1.Lines; // aktueller text sichern
SynEdit1.Lines := SynEdit2.Lines; // backup zurückschreiben
SynEdit2.Lines := SynEdit3.Lines; // backup durch aktuellen text ersetzen
ToolButton7.enabled := true;
ToolButton9.enabled := false;
end;
die beiden buttons immer abwechselnd enabled oder disabled
beim schreiben neuer zeilen wird vor den einfügen immer
SynEdit2.Lines := SynEdit1.Lines;
gemacht um den aktuellen zwischenspeicher zu lesen sowie der redobutton aus und der undo button eingeschaltet
ToolButton9.enabled := false;
ToolButton7.enabled := true;
vielleicht hilft es ja einen der das topic durch die suche findet