第 22 章 VISIO ユーザー インターフェースのカスタマイズ
ユーザー インターフェースのカスタマイズを始める前に、以下の点を考慮する必要があります。
このセクションの内容...
Visio の組み込み UI のコピーのカスタマイズと、既存のカスタム UI のカスタマイズ
Visio のユーザー インターフェースをカスタマイズする際には、そのユーザー インターフェースが Visio の組み込みユーザー インターフェースか、それともカスタム ユーザー インターフェースなのかを確認する必要があります。カスタム ユーザー インターフェースの場合には、ゼロの状態から Visio の組み込みユーザー インターフェースを変更するのではなく、既存のインターフェースを自分のソリューション用に変更し、あとで元の状態に戻すことをお勧めします。
Visio の組み込みメニューやツールバーを取得すると、実際に取得されるのは Visio の組み込みユーザー インターフェースのコピーまたはスナップショットです。オリジナルの Visio 組み込みユーザー インターフェースはそのままの状態で残されているため、後で復元することができます。カスタム ユーザー インターフェースを取得した場合、コピーではなく現在アクティブなカスタム ユーザー インターフェース (ユーザーが追加したカスタムツールバーも含む) が取得されます。
どちらのユーザー インターフェースが使用されているかを識別するには、Documents コレクション内の全 Document オブジェクトの CustomMenus および CustomToolbars プロパティ を調べます。次に、Application オブジェクトの同じプロパティを調べます。オブジェクトでカスタム ユーザー インターフェースが使用されていない場合はどちらのプロパティからも Nothing が返され、Visio の組み込みユーザー インターフェースのコピーを取得できます。
カスタム ユーザー インターフェースが使用されている場合、そのカスタム ユーザー インターフェースを別のものに置き換えるか、作成したカスタム ユーザー インターフェース項目を追加することができます。
以下の例では、アプリケーション レベルの任意のカスタム ユーザー インターフェースを置き換えることなく、現在アクティブなユーザー インターフェースを取得する方法を示しています。カスタム ユーザー インターフェースに項目を追加するには、さらにコードを記述する必要があります。
'Check if there are document custom menus
If ThisDocument.CustomMenus Is Nothing Then
'Check if there are Visio custom menus
If Visio.Application.CustomMenus Is Nothing Then
'Use the built-in menus
Set visUIObj = Visio.Application.BuiltInMenus
Else
'Use the Visio custom menus
Set visUIObj = Visio.Application.CustomMenus.Clone
End If
Else
'Use the file custom menus
Set visUIObj = ThisDocument.CustomMenus
End If
CustomMenus および CustomToolbars プロパティの詳細については、Visio 製品付属のオンライン ヘルプ「開発者用リファレンス」 ([ヘルプ] メニューから [開発者用リファレンス] を選択)」を参照してください。
Document または Application オブジェクトから UIObject オブジェクトを取得するのと同様のプログラミングにより、SetCustomMenus または SetCustomToolbars メソッドを使用してカスタム ユーザー インターフェースの変更を Document または Application オブジェクトに適用できます。適用範囲を設定することによって、変更を適用するオブジェクトが決定されます。
カスタム ユーザー インターフェースの適用範囲は、アプリケーション レベルまたは図面レベルのいずれかに設定できます。どの図面を開いているときでもそのカスタム ユーザー インターフェースを使用できるようにするには、カスタム ユーザー インターフェースを Application オブジェクトに設定します。
カスタム ユーザー インターフェースを図面レベルで、つまり、ある図面を開いているときにのみ使用可能にするには、そのカスタム ユーザー インターフェースを Document オブジェクトに設定します。Microsoft Visusal Basic for Applications (VBA) でプログラミングしているときには、通常カスタム ユーザー インターフェースは図面レベルで設定します。以下の例では、カスタム メニューを ThisDocument オブジェクトに設定する方法を示します。
Dim uiObj as Visio.UIObject
'Get a copy of the built-in Visio menus
Set uiObj = Visio.Application.BuiltInMenus
...'Make custom UI changes
'Set custom menus for ThisDocument
ThisDocument.SetCustomMenus uiObj
Visio のユーザー インターフェースのカスタマイズ方法は、変更の適用範囲とプログラミング環境によって異なります。ユーザー インターフェースの変更の適用範囲に応じて、その変更の有効期間を図面がアクティブな間のみ、特定の Visio セッション中、または全 Visio セッション中のいずれかに設定できます。
図面がアクティブな期間だけ、Visio のユーザー インターフェース (カスタムまたは組み込み) に優先するカスタム ユーザー インターフェースを設定できます。たとえば、ユーザーが特定のテンプレートで図面を作成するときに、ユーザーが図面を効率的に作成できるウィザードを起動するツールバー ボタンを追加できます。ユーザーが図面を閉じると、カスタム ユーザー インターフェースがアプリケーション レベルに設定されているか、または次のアクティブな図面に設定されていない限り、Visio の組み込みユーザー インターフェースが再度表示されます。
VBA で Visio ユーザー インターフェースをカスタマイズする場合、通常は図面レベルで行います。この場合、カスタム ユーザー インターフェースを ThisDocument オブジェクトに設定するか、または DocumentOpened イベントが発生したときにカスタム ユーザー インターフェース (.vsu) ファイルをロードし、図面がアクティブな間だけカスタム ユーザー インターフェースが有効になるよう設定します。イベントの詳細については、「第 21 章 Visio の イベントの処理」を参照してください。
特定の Visio セッション中のみカスタム ユーザー インターフェースを有効にするには、VBA マクロまたはスタンドアロン プログラムを使用して、カスタム ユーザー インターフェースを Application オブジェクトに設定します。
変更したカスタム ユーザー インターフェースをすべての Visio セッションで利用できるようにするには、Visio が起動されるたびにカスタム ユーザー インターフェースを Application オブジェクトに設定するか、カスタム ユーザー インターフェース ファイルを作成します。
カスタム ユーザー インターフェース ファイル作成後、Application オブジェクトの CustomMenusFile または CustomToolbarsFile プロパティでそのファイル名を指定します。別のファイルを指定するか、または Visio の組み込みユーザー インターフェースが復元されない限り、作成したカスタム ユーザー インターフェース ファイルは、Visio が起動されるたびにロードされます。詳細については、「セクション 3 ユーザー インターフェースの変更」の「カスタム UI の変更を有効にする」のを参照してください。