AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte TRichEdit - simples Undo/Redo

TRichEdit - simples Undo/Redo

Ein Thema von taaktaak · begonnen am 19. Mär 2009
Antwort Antwort
taaktaak
Registriert seit: 25. Okt 2007
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, 40x aufgerufen)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz