Einzelnen Beitrag anzeigen

taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.993 Beiträge
 
Delphi 7 Professional
 
#1

TRichEdit - simples Undo/Redo

  Alt 19. Mär 2009, 23:09
Moin, Moin.

Als Auskoppelung meines aktuellen Projektes möchte ich eine Undo/Redo-Klasse für TRichEdit zur Diskussion stellen. Nach dem Motto "Mit Kanonen auf Spatzen schießen" wird die Funktionalität durch (komprimiertes) Speichern des gesamten RichEdit-Inhalts in MemoryStreams für jede Änderung des Programmes realisiert. Zusätzlich zum Text wird ebenfalls die jeweils aktuelle oberste Zeiel, die Caret-Position und die Länge der Textmarkierung gespeichert und mit Undo restauriert. Da in meinem speziellen Fall die Texte meist nur wenige tausend Zeichen lang sind und ich die Möglichkeit, mehrere hundert Rücknahmeschritte anzubieten, für praxisfremd erachte, erscheint mir das Verfahren, obgleich vermutlich recht unprofessionell, als vertretbar.

Die Klasse veröffentlicht 3 Methoden und 3 Properties:
  • SaveBuffer() - Muss vor jeder Veränderung des Textes die reversibel sein soll aufgerufen werden. Also z.B. im OnKeyPress()
  • GetUndo() - Wird im OnClick() des Undo-Buttons placiert
  • GetRedo() - Wird im OnClick() des Redo-Buttons placiert
  • MaxBuffersize - Optionale Festlegung der maximalen Puffergröße; das Programm definiert eine Mindestgröße von 128 KB
  • OnStateChanged - Event, das den Statuswechsel meldet; d.h. Undo-/Redo-Button müssen in diesem Event aktiviert/deaktiviert werden
  • OnSizeChanged - Informiert über die aktuelle und maximal Puffergröße - hauptsächlich für die Testphase gedacht
So, dann schaut's euch mal an


PS: Für die Komprimierung wird "ZLibEx" verwendet
Angehängte Dateien
Dateityp: zip richeditundoredo_202.zip (1,7 KB, 41x aufgerufen)
Ralph
  Mit Zitat antworten Zitat