2

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

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

有没有人见过设计良好的 delphi 方法,它使用单独的 Delphi 视图(表单)和模型对象(数据对象与表单的所有编辑同步更新,对复杂的模型-视图-控制器设计提供多级撤消/重做支持,并且验证和控制逻辑不是嵌入到表单中,也不是嵌入到模型中,而是分离出来的。

在我看来,如果您不必使用 MVC,并且您需要简单地制作一个没有模型或控制器对象的 Delphi 演示应用程序原型,那么纯简单 Delphi 的撤消/重做“one-form-is-my” -app" 设计起来会更简单,但它会变得更复杂,因为您需要记录和重放对象并将它们同步到 Delphi 表单操作,如 TEdit.OnChange。

4

2 回答 2

2

您应该使用以下模式:

  • Model-GUI-Mediator
    -- 对象模型和 GUI 控件之间的同步,因此您不受 TDataset 和 DB-Aware 控件的限制。您可以从每个 VCL 控件创建对象感知控件。
  • 命令
    --your ACTIONS 对象模型。应该被控制器解雇。
  • Memento
    -- 保存数据对象的内部状态以实现 Undo/ReDo 行为

尽快我会在我的博客 www.danieleteti.it 上发布一个简单的例子

于 2010-08-07T12:02:58.897 回答
0

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

奖励:您可以使用数据感知控件。

我有一种感觉,您正在寻找某种类似 ORM 的行为。
在 DelphiLive,我将谈论做一种基于 ClientDataSets 的 ORM 层;他们很酷。

——杰伦

于 2010-08-06T16:43:37.890 回答