2

よく知られている Command パターンは、元に戻す/やり直し機能を備えたモデルを実装する場合によく使用されます。元に戻す/やり直しを実装する単純な Delphi フォームの参照実装 (例) を探しています。

私が見た限りでは、3 つの編集ボックス、6 つのメモ ボックス、およびいくつかのコンボ ボックスとその他の単純な編集コントロールを備えた単純な Delphi データ入力フォームは、通常、元に戻す/やり直しをサポートしていません。

別の Delphi ビュー (フォーム) とモデル オブジェクト (データ オブジェクトはフォームへのすべての編集と同期して更新される検証および制御ロジックは、フォームやモデルに組み込まれるのではなく、分離されます。

MVC を使用する必要がなく、モデル オブジェクトやコントローラー オブジェクトを持たない Delphi デモ アプリのプロトタイプを作成するだけでよい場合、純粋で単純な Delphi の元に戻す/やり直しは「1 つのフォームが私のもの」 -app" の方が設計は簡単ですが、オブジェクトを記録して再生し、それらを TEdit.OnChange などの Delphi フォーム アクションに同期する必要があるため、より複雑になります。

4

2 に答える 2

2

次のパターンを使用する必要があります。

  • Model-GUI-Mediator
    -- オブジェクト モデルと GUI コントロール間の同期。TDataset および DB-Aware コントロールによる制限を受けません。すべての VCL コントロールからオブジェクト対応コントロールを作成できます。
  • Command
    --your ACTIONS on objects モデル。コントローラーによって起動される必要があります。
  • Memento
    -- Undo/ReDo 動作を実装するためのデータ オブジェクトの内部状態の保存

できるだけ早く、簡単な例をブログ www.danieleteti.it に投稿します。

于 2010-08-07T12:02:58.897 に答える
0

私はおそらくそれを ClientDataSet に基づいていると思います: 元に戻す機能を備えています (そして、私の記憶が正しければ、それを使ってやり直しを実装するのも非常に簡単です)。

ボーナス: データ対応コントロールを使用できます。

ある種の ORM のような動作を探しているように感じます。
DelphiLive では、ClientDataSets に基づく一種の ORM レイヤーの実行について話します。彼らはかなりクールです。

--jeroen

于 2010-08-06T16:43:37.890 に答える