Dateneingabe Bildschirm aktualisiert Modell in Echtzeit Objekte, bietet Undo und Redo, Live-Updates zu einem Modellobjekt mit dem Befehl Muster

StackOverflow https://stackoverflow.com/questions/3425217

Frage

Das bekannte Befehlsmuster wird häufig verwendet, wenn Sie ein Modell mit Undo / Redo-Funktionen implementieren mögen. Ich suche eine Referenzimplementierung (Beispiel) eine einfache Delphi Form, die Arbeitsgeräte Undo / Redo.

Von dem, was ich gesehen habe, einfach delphi Dateneingabeformulare mit drei Bearbeitungsfeldern, sechs Memo-Boxen und ein paar Combo-Boxen und anderen einfachen Steuerelemente bearbeiten, hat normalerweise keine Undo / Redo unterstützen.

Hat jemand einen gut gestalteten delphi Ansatz für Multi-Level-Undo / Redo-Unterstützung für ein komplexes Model-View-Controller-Design mit einer separaten Delphi Ansicht (Form) und Modellobjekte (Datenobjekte werden aktualisiert synchron mit allen Bearbeitungen zu sehen die Form und die Validierung und die Steuerlogik in Form, oder in dem Modell nicht eingebettet, sondern abgetrennt.

Es scheint mir, dass, wenn Sie nicht MVC verwenden haben, und man brauchte einfach Prototyp einer Delphi-Demo-Anwendung, die keine Modell oder Controller-Objekte hatte, dass Undo / Redo einer reinen einfache Delphi „one-form- Design ist-my-app“würde einfacher sein, aber es wäre komplizierter, wie Sie Objekte müssen aufzeichnen und wiedergeben und synchronisieren sie zu Delphi Form Aktionen wie TEdit.OnChange.

War es hilfreich?

Lösung

Sie sollten folgende Muster verwenden:

  • Modell-GUI-Mediator
    - Synch zwischen Objekten Modell und GUI-Steuerung, so dass Sie nicht durch TDataset und DB-Aware Kontrollen begrenzt sind. Sie können Objekt-aware Kontrollen von jedem VCL-Steuerelemente erstellen.
  • Befehl
    - Ihre Aktionen auf die Modellobjekte. Sollte durch Controller abgefeuert werden.
  • Memento
    - Speicher interner Zustand von Datenobjekten für die Undo / Redo-Verhaltens Umsetzung

Geben Sie so schnell wie möglich I'will ein einfaches Beispiel auf meinem Blog www.danieleteti.it

Andere Tipps

Ich würde wahrscheinlich Basis, dass auf einem ClientDataSet:., Die Undo-Funktionen hat (und wenn ich mich richtig erinnere, ist es ziemlich einfach ist, Redo zu implementieren damit auch)

Bonus:. Sie können die Daten verwenden bewusst Kontrollen

Ich habe das Gefühl, Sie sind für eine Art von ORM Verhalten suchen.
Bei DelphiLive werde ich tun, eine Art von ORM-Schicht basiert sprechen auf ClientDataSets; sie sind ziemlich cool.

- jeroen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top