Sorry - wenn dies wichtig ist, will ich Nachtragen: Ich arbeite derzeit mit Compiler Delphi 10 Berlin, und Nein, es geht nicht um eine Undo/Redo-Funktion.
Vielmehr nutzte ich früher einen Editor (nicht Mause-fähig), jedoch mit speziellen Eigenschaften, den ich in graphischer Oberfläche nachentwickelt habe. Dieser erlaubte u.a. mit einer Funktionstaste (F8 ) zeichenweise den Text der zuletzt geänderten Zeile in die aktuelle Zeile zu kopieren. Diese Funktion ist sehr elegant, wenn es sich um ähnliche, sich wiederholende Texte handelt. ein Text-Beispiel:
Delphi-Quelltext
1: 2:
| if i > n then Form1.StringGrid.Cells[0,0]:='Anton' else if i < n then Form1.StringGrid.Cells[1,0]:='Berta'; |
Unabhängig, dass diese Befehlsfolge wenig Logik enthält, zeigt sich, dass die zweite Zeile schneller zu schreiben ist mit dieser "Kopierfunktion" als mit Markieren/ Copieren und danach die Änderungen vornehmen (bin ein wenig schreibfaul und so vermeidet man auch Fehler ).
Anmerkung: Damals gab es kein Undo/Redo und so war die Funktion auch ein Mittel, um versehentlich gelöschte Zeilen wieder herzustellen.
Vielleicht nutze ich einfach nur die OnChange-Funktion von Richedit und verzichte auf das Retten der Zeile bei Löschen mit der Maus, denn hierfür habe ich ja tascächlich das Undo/Redo. Ich sehe nur, dass z.B. der Delphi-Compiler die Zeile mit Blank auffüllt, wennn man deutlich hinter das letzte Zeichen der Zeile klickt, um beim Verlassen der Zeile diese (unnötigen) Blank wieder zu löschen.
Genau diese Ereignis (Verlassen der Zeile), verbunden mit einem gemerkten OnChange wäre m.E ideal zum Retten der Zeile in "ZeileOld". Derzeit speichere ich bei jeder Änderung die gesamte Zeile. Nicht gerade elegant, spielt aber bei heutiger Geschwindigkeit vielleicht nicht mehr so eine große Rolle. Hatte die Hoffnung, dass jemand weiß, wie man das Ereignis "Verlassen der Zeile" leicht erkennt.
hRb