代码之家  ›  专栏  ›  技术社区  ›  Warren P

数据输入屏幕实时更新模型对象,提供撤消和重做,使用命令模式实时更新模型对象

  •  2
  • Warren P  · 技术社区  · 14 年前

    当您想要实现具有撤消/重做功能的模型时,通常会使用众所周知的命令模式。我正在寻找一个实现undo/redo的简单Delphi表单的参考实现(示例)。

    据我所见,带有三个编辑框、六个备忘框、几个组合框和其他简单编辑控件的简单delphi数据输入表单通常不支持Undo/Redo。

    有没有人看到过一个设计良好的delphi方法,它支持多级撤销/重做,用于使用单独的delphi视图(窗体)和模型对象(数据对象与对窗体的所有编辑同步更新,验证和控制逻辑不嵌入窗体或模型中,而是分离出来)的复杂模型视图控制器设计。

    2 回复  |  直到 14 年前
        1
  •  2
  •   Daniele Teti    14 年前

    您应该使用以下模式:

    • 模型GUI中介
      --对象模型和GUI控件之间的同步,因此您不受TDataset和DB-Aware控件的限制。您可以从每个VCL控件创建对象感知控件。
    • 命令
      --您对对象模型的操作。应该由控制器触发。

    • --保存数据对象的内部状态以实现撤消/重做行为

        2
  •  0
  •   Jeroen Wiert Pluimers    14 年前

    我可能会基于ClientDataSet:它有撤销功能(如果我没记错的话,用它实现redo也很容易)。

    好处:您可以使用数据感知控件。


    在DelphiLive上,我将讲述如何在clientdataset的基础上实现ORM层;他们很酷。

    --杰罗恩