第 24 章 プログラム内での VISIO UNDO マネージャの使用
図面内の図形に関連するデータを含むパラレル モデルをソリューションに保持する場合、そのモデルが図面の状態を正確に表していることが重要です。
図面とモデルの同期がとれるようにするために、Visio® の Undo マネージャに undo ユニットを追加することができます。undo ユニットは COM (Component Object Model) オブジェクトで、Visio の IVBUndoUnit インターフェース (またはプロセス中 COM オブジェクトの IOleUndoUnit インターフェース) をサポートしています。図面での変更を反映する外部のデータ ソースへの変更を元に戻したりやり直す場合に必要なアクションが含まれています。
Visio のIVBUndoUnit インターフェースは、Microsoft Visual Basic for Applications (VBA) や Visual Basic プログラマが独自のundo ユニット を作成して、Visio の Undo マネージャに組み入れることができるように設計されています。undo ユニット を作成するには、プロジェクトに挿入するクラス モジュール内で、すべてのパブリック プロシージャに対してこのインターフェースを実行する必要があります。ここでは、VBA プロジェクトで IVBUndoUnit インターフェースを実行して、undo ユニットを作成する方法について説明します。
VBA または Visual Basicのインターフェースの実行の詳細については、Visual Basic のマニュアルで「Implements」ステートメントを検索してください。IVBUndoUnit の詳細については、「Visio タイプ ライブラリ」を参照してください。
このセクションの内容...
Visio の Undo マネージャへのundo ユニットの追加
undo ユニット を作成するには次の 2 通りの方法があります。
このトピックと次の「セクション 4 Visio以外のデータを保持するundo ユニットの作成 : 例」」では、Undo/Redo 状態を管理する undo ユニット について説明します。
undo ユニット を作成するには
Implements Visio.IVBUndoUnit
このクラス モジュール内では、IVBUndoUnit. のすべてのパブリック プロシージャを実行する必要があります。Implements ステートメントをコード化すると、コード ウィンドウの [オブジェクト] ボックスに VBUndoUnit が表示されます。
実行するプロシージャを対象に [プロシージャ] ボックスでスケルトン プロシージャを使用できるようになります。詳細については下表に示します。
プロシージャ名 | 説明 |
---|---|
Description | このプロパティでは、undo ユニットを記述する文字列を返します。この文字列は、[標準] ツールバーの undo リストに表示されます。 |
Do |
このメソッドはアクションを Undo したり、Redo したりするためのアクションです。
Undoしたり Redo したりするために 1 つのオブジェクトを作成した場合は、このプロシージャによって、Undoした状態や Redo した状態が保たれ、双方のスタックにundo ユニットが追加されます。 Do メソッドが Nothing ポインタで呼び出されると、ユニットはUndo アクションを実行しますが、undo スタックまたは redo スタックには何も追加されません。 |
OnNextAdd | このメソッドは、次のundo ユニットが同じスコープ内の undo スタックに追加された時に呼び出されます。OnNextAdd 通知がundo ユニットに届くと、このundo ユニットにより長くデータを挿入できるようになり、作成オブジェクトにこの通知が返されます。 |
UnitSize | このプロパティは、undo ユニットと、これに割り当てられたリソースの概算メモリ容量 (バイト単位) を返します。Visio エンジンは、undo キューを削除する場合にこのメモリ容量を利用することができます。この値はオプションで、0 も可能です。 |
UnitTypeCLSID | このプロパティは、ユーザーのundo ユニットを識別するための CLSID を含む文字列値を返します。複数のundo ユニットに同じ CLSID を使い、UnitTypeLong プロシージャには別々の値を使うことができます。この値はオプションで、Null または空文字列も可能です。 |
UnitTypeLong | このプロパティは、ユーザーがオブジェクトの識別に使うことができる Long を返します。この値はオプションで、0 も可能です。 |
パラレル モデルでアクションを実行するプログラムの任意の位置に、アクションを Undoまたは Redo可能にする undo ユニットのインスタンスを追加します。このようにすれば、アドオンの変更を Undoするときに他のものと一緒に呼び出されるようになります。
Visio の Undo マネージャで undo ユニットを追加するには
たとえば、プロジェクトに挿入したクラス モジュールの名前が MyUndoUnit のときは以下のようになります。
Application.AddUndoUnit New MyUndoUnit
New キーワードの詳細については、Visual Basic のマニュアルを参照してください。