問題タブ [undo-redo]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
4 に答える
4535 参照

c# - すでに機能しているアプリケーションでの WPF/C# でのやり直し

この質問のタイトルをどのように達成できるかについて、すでにいくつかの調査を行っています。私が取り組んでいるアプリは、数年ほど開発されています (ただし、進行は遅いですが、現実の世界での様子はご存知のとおりです)。現在、複数レベルの取り消し/やり直し機能を組み込むことが必須になっています。「始める前にこれについて考えるべきだった」と言うのは少し遅いです...まあ、私たちはそれについて考えていました-そして私たちはそれについて何もしませんでしたが、今ここにあります. SO(および外部リンク)を検索すると、最も一般的な2つの方法が次のように見えることがわかります...

コマンドパターン

記念品のパターン

コマンド パターンは非常に多くの作業が必要なように見えます。その過程で何千ものバグが発生することしか想像できないので、あまり好きではありません。

Memento のパターンは、実際、私が頭の中で考えていたものとよく似ています。現在メモリ内にあるオブジェクト モデルのスナップショットをすばやく取得する方法があれば、それをどこかに保存できると考えていました (メモリ内、ファイル内など)。素晴らしいアイデアのように思えますが、これについて私が見ることができる唯一の問題は、それが私たちがすでに書いたものとどのように統合されるかということです. 大きなパネル (場合によっては数百) に画像を描画し、ユーザーが UI またはカスタム ビルドのプロパティ グリッドを介してそれらを操作できるように、アプリが表示されます。アプリ全体が大きなオブザーバー パターンでリンクされています。2 番目に何かが変更されると、イベントが発生し、更新が必要なすべての処理が行われます。これは素晴らしいことですが、ユーザーがプロパティ グリッドの texfield にテキストを入力している場合、UI が追いつくまでに少し時間がかかると考えずにはいられません (ユーザーがキーを押すたびに、新しいスナップショットが追加されるようです)元に戻すリストへ)。だからあなたへの私の質問は....

  • Memento パターンに代わる、うまくいくかもしれない何か良い方法を知っていますか?
  • Memento パターンがここに収まると思いますか、それともアプリの速度が遅くなりすぎると思いますか。
  • Mementoパターンが進むべき道である場合、オブジェクトモデルのスナップショットを作成する最も効率的な方法は何ですか(私はそれをシリアル化するか何かを考えていました)
  • スナップショットをメモリに保存する必要がありますか、それともファイルに保存できますか?

ここまで読んでくれてありがとう。皆様からのご意見は貴重であり、非常に高く評価されます。

0 投票する
5 に答える
5853 参照

winforms - WindowsフォームアプリケーションでC#を元に戻す

C#でUNDOを開発する簡単な方法を知りたい

私はウィンドウフォームアプリケーションを持っています、ウィンドウにはたくさんのテキストボックスがあるフォームがあります、ボックスを選択し、チェックボックス...

ユーザーが入力して計算ボタンをクリックすると、プログラムはすべての入力に従って計算し、画面に値を返します。

私はすべての計算の後に状態を保存する簡単な方法を検索し、ユーザーに1つ以上のステップを返す機能を提供します。

ありがとう

0 投票する
1 に答える
1993 参照

iphone - 元に戻すマネージャーの用途は何ですか? それの使い方?

iPhoneで元に戻すマネージャーの必要性は何ですか? サンプル プログラムでは、このようなボタンは見たことがありません。元に戻すとやり直しの意味と使い方を知っています。しかし、ここでの私の質問は、どの目的のために必要ですか? 私のアプリケーションでそれを使用する方法? 知っている場合は、良い例のコードリンクも提案してください...

ありがとうございました

0 投票する
3 に答える
4970 参照

python - Python/Django を使用して「元に戻す」機能を実装する方法

ユーザーが連絡先データ (メンバーシップ番号、名、姓など) を含む CSV ファイルをインポートできるようにする Django アプリケーションがあります。

ファイルをインポートすると、アプリケーションはデータベースで一致するレコードをチェックし、1) 一致するレコードがない場合は新しいレコードを挿入するか、2) 既存のデータを新しいデータで更新します。

私の質問は、ユーザーがインポート操作を元に戻し、複数のレコードを元の状態に戻すことができるように、Django またはストレート Python を使用して元に戻す機能を実装する最良の方法は何ですか?

私の最初の考えは、次のようなテーブルを作成することです(疑似コード):

次に、ユーザーが [元に戻す] をクリックすると、トランザクションに関連付けられている unique_id を検索し、そのトランザクションの影響を受けるすべてのレコードを old_value に設定できます。

私が行方不明になっているこれを行うためのより簡単な方法があるかどうか、または誰かがこのような経験を持っているかどうか疑問に思っています。

0 投票する
2 に答える
583 参照

php - php/ajax ユーザー アクション アンドゥ マネージャー

Web アプリの履歴を元に戻す/やり直す機能を提供するライブラリは存在しますか? アイデアは、すべてのユーザーアクションに対して反対のアクションと変数の状態を登録できるphp / javascript / ajaxシステムです(通常の元に戻すマネージャーのように!)。クライアントレベルとサーバーレベルの両方で機能するはずです。

聞きすぎた?

0 投票する
1 に答える
977 参照

android - FingerPaintアプリケーション(Googleのサンプルアプリケーションの1つ)に元に戻るREDO機能を追加する

FingerPaintアプリケーションを変更し、元に戻す機能とやり直し機能を追加したいと思います。基本的に、onDrawメソッドでキャンバスにパスを描画し、ビットマップにも同じパスを描画します。とにかく、私の最初の考えはビットマップをファイルとして保存することでしたが、もっと効率的な方法があるかもしれません。提案を待っています。

0 投票する
1 に答える
1110 参照

flash - ActionScript-一般的な元に戻す/やり直しAPI?

あらゆるタイプの可能なundoおよびredoコマンドでうまく機能する独自のundo/redoクラスを作成しようとして失敗しました。

たとえば、私の単純なクラスは、表示オブジェクトのxとyの位置を元に戻す/やり直す、またはスライダーの値を元に戻す/やり直すなどで完全に機能しますが、クラスを調整して追加や削除なども機能するようにしようとすると、物事が厄介になりますリストへのアイテム。

アクションスクリプト(Flexなし)の一般的な取り消しとやり直しのためのよく知られた、十分に文書化された解決策はありますか?

0 投票する
1 に答える
431 参照

undo - 繰り返されるコマンドを元に戻す - やり直す

したがって、元に戻す/やり直しは通常、コマンド パターンによって実装されることがわかります。ただし、コマンドが x 回繰り返されることを意図している場合、x 回元に戻すことはユーザーにとって面倒です。

たとえば、「int num」があり、キーボードで「+」を押すと、プログラムは「++num」を実行します。ユーザーが「+」を押して num を 0 から 50 に増やした場合、ユーザーは元に戻したいのですが、ユーザーが 1 回元に戻すことができるようにするにはどうすればよいですか? num は 0 に戻ります。

一連の繰り返しコマンドを処理できるように元に戻す方法を実装するには?

前もって感謝します!

0 投票する
3 に答える
4519 参照

android - 最後のタッチ操作を元に戻す/やり直す方法

処理中の画像があり、元に戻すとやり直すという 2 つのボタンがあります。これらの 2 つのボタンのいずれかがクリックされた場合に、前のタッチ操作を元に戻す/やり直すコードが必要です。スタックを使用する必要があることはわかっています。どのように実装すればよいですか?

0 投票する
1 に答える
614 参照

winforms - MVP 監視コントローラー、データ バインディング、元に戻す/やり直し

私のアプリケーションは MDI Winform アプリケーションです。MVP パターンとデータ バインディングに関連する問題に遭遇しました。

私のフォームはすべてモードレスです。フィールドを変更したり、コンボボックスで選択したアイテムを変更したりするときに、モデルを変更し、すべてのフォームをモデルとすぐに同期させたいと考えています。データバインディングにより、これは単純なフィールドで完全に可能になり、複雑な操作では、Presenter を使用してビューを「手動で」更新します。

しかし、元に戻す/やり直すメカニズムをどのように写真に収めるのですか? つまり、「元に戻す」ボタンをクリックして、テキスト フィールドで行った変更を元に戻したいのです。

コマンドパターンを適用しようとしましたが、データバインディングメカニズムに「コマンド」メカニズムを導入する場所がないようです。私はこれに固執しているため、バインディングメカニズムを完全に放棄することを検討しています。

Binding に関する記事はたくさんありますが、元に戻す/やり直しの解決策が実際に公開されているわけではありません。

元に戻す/やり直しとデータバインディングは本当に互換性がありませんか?