Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Undo unterbinden, oder temporär sichern und wieder laden?


galagher - Mo 28.10.24 11:55
Titel: Undo unterbinden, oder temporär sichern und wieder laden?
JvRichEdit, RichEdit, Memo etc. nutzen ja ein internes Undo, bei dem einzelne Änderungen schrittweise wieder rückgängig gemacht werden können. Ich suche nun nach einer Möglichkeit, eine oder mehrere einzelne Änderung(en) entweder erst gar nicht in die interne Undo-"Liste" aufzunehmen oder die Undo-"Liste" vor der Änderung zu sichern, dann die Änderung auszuführen und die Undo-"Liste" danach wieder zu laden.
Der Effekt ist in beiden Fällen der selbe: Die Änderung ist im Undo nicht vorhanden.

Quelltext
1:
2:
SaveUndo(RichEdit1)
LoadUndo(RichEdit1)

Nur leider gibt's das nicht, aber so in der Art!

CanUndo := False geht ja leider nicht.

Kann man das machen, ohne ein eigenes Undo zu implementieren?


Th69 - Mo 28.10.24 12:26

Es geht nur den Undo-Puffer zu löschen. Dazu kannst du die Nachricht EM_EMPTYUNDOBUFFER [https://learn.microsoft.com/en-us/windows/win32/controls/em-emptyundobuffer] an das Control senden (zumindestens die auf den Windows-Controls basierenden).
Es gibt kein temporäres Unterdrücken des Undo/Redo-Mechanismus.

Edit: Dies entspricht wohl der ClearUndo [https://docwiki.embarcadero.com/Libraries/Athens/de/Vcl.StdCtrls.TCustomEdit.ClearUndo]-Prozedur.


galagher - Mo 28.10.24 18:35

user profile iconTh69 hat folgendes geschrieben Zum zitierten Posting springen:
Es gibt kein temporäres Unterdrücken des Undo/Redo-Mechanismus.
Ist wohl leider so!