前のトピック     次のトピック

第 24 章 プログラム内での VISIO UNDO マネージャの使用

セクション 2   アドオンでの undo スコープの作成

Visio® エンジンはアドオン内の undo 可能なアクションを自動管理できないことがあります。アドオンがスタンドアロンのプログラムなどの場合には、Visio ではアドオンの開始と終了を検出することができません。または、プログラムがモードレスで動作している場合には、Visio にアドオンが実行している操作のすべてが通知されるわけではありません。このため、Visio エンジンには、ユーザーが独自に undo スコープを作成する機能があります。

複数の操作を undo 可能なアクションにまとめるだけでなく、undo スコープを使用するとプログラムで受け取ったイベントがユーザーのアクションによるものかどうか判断することができます。このためには、undo スコープを作成し、各スコープのIDをイベント ハンドラからチェックします。

このセクションの内容...

undo スコープの作成

undo スコープとイベントの関連付け

undo スコープの作成

undo スコープを作成するには、アプリケーション オブジェクトの BeginUndoScope および EndUndoScope メソッドを使います。アドオンの中に複数のスコープを作成し、それぞれをネストすることもできます。

BeginUndoScope メソッドでは、新たなスコープを開き、そのスコープを定義する ID を返します。スコープが開いている間、Visio の undo マネージャは、スタックに新たに追加されたすべてのundo ユニットをスコープに加えます。Visio エンジンは EnterScope イベントをキューに加え、後でスコープ ID と説明をプログラムに渡せるようにします。

undo スコープを作成するには、以下のガイドラインを参考にしてください。

EndUndoScope メソッドは、引数 TRUE または FALSE をとります。これは、スコープの間に行った変更を了承するか、キャンセルするかを示します。アドオンをキャンセルする場合に、変更をロールバックするためにこれを利用することができます。

BeginUndoScope メソッドおよび EndUndoScope メソッドの詳細については、Visio 製品付属のオンラインヘルプ「開発者用リファレンス」 ([ヘルプ] メニューから [開発者用リファレンス] を選択) を参照してください。

TOP へ

undo スコープとイベントの関連付け

受け取ったイベントがアドオンによって実行されたアクションによるものかどうかを判断するために、undo スコープを使うことができます。

BeginUndoScope メソッドで undo スコープを開くと、スコープ ID が返されて EnterScope イベントが起動されます。EndUndoScope メソッドで undo スコープを閉じると、ExitScope イベントが起動されます。undo スコープが開いている間に発生するすべてのイベントは、EnterScope イベントと ExitScope イベント間で起動されます。

イベントを受け取ると、自分のスコープ ID を使ってそのイベントが undo スコープで行われたアクションによるものかどうかを判断することができます。

undo スコープでイベントが発生したかどうかを判断するには

  1. BeginUndoScope メソッドから返されたスコープ ID をプログラム変数に保存します。
  2. イベント ハンドラでイベントを受け取った場合、Application オブジェクトの IsInScope プロパティを取得し、これを保存しておいたスコープ ID に渡します。
  3. IsInScope プロパティから TRUE が返された場合は、そのイベントは undo スコープでユーザーが行ったアクションによるものです。
  4. ExitScope イベント用のイベント ハンドラを作成し、スコープを閉じるときにスコープ ID 変数をクリアします。

Top