第 23 章 VISIO ソリューションでの ACTIVEX コントロールの使用
Visio® ソリューションで ActiveX コントロールを使用すると、他の Windows アプリケーションに基づいたソリューションと一貫性のあるユーザー インターフェースを作成することができます。コントロールは図面ぺージ上にあるので、ユーザーは、図面上でコントロールと Visio 図形の両方を自由に操作することができます。
このセクションの内容...
コントロールにおける Visio アンビエント プロパティの使用
Visio 図面で ActiveX コントロールを操作するには、デザイン モードと実行モードを切り替えます。デザイン モードでは、コントロールの挿入、移動、サイズ指定、およびプロパティ設定を行うことができます。実行モードは、コントロールを実際に使用できるモードです。たとえば、コマンド ボタンをクリックし、Click イベント ハンドラを発生させることができます。コントロールをデザインしたり使用する場合以外は、Visio がデザイン モードであるか実行モードであるかは関係ありません。他の Visio のコマンドとツールは、どちらのモードでも同じように動作します。
図面のモードは Microsoft Visual Basic for Applications (VBA) プロジェクトのモードと同期されるので、図面とそのプロジェクトは常に同じモードになります。図面がデザイン モードのときは、コントロールも Visio のオブジェクトもイベントを発行しません。
マクロ ウイルス保護機能が設定されていない限り、Visio 図面はデフォルトで実行モードで開きます。デザイン モードに切り替えるには、まず、[開発者用] ツールバーが表示されていることを確認してください。ツールバーが表示されていない場合は、[表示] メニューの [ツールバー] をポイントし、[開発者用] をクリックします。次に、[開発者用] ツールバーの [デザイン モード] をクリックします。ボタンが押されたままの状態になり、図面がデザイン モードに変わったことを示します。
注 マクロ ウイルス保護機能が設定されていると、図面を開いたときにマクロを有効にするか無効にするかをたずねるメッセージが表示されます。マクロを無効にすると、図面はデザイン モードで開きます。図面を閉じて、マクロを有効にしてから図面を再度開くまで、実行モードに切り替えることはできません。マクロウイルス保護機能を設定するには、[ツール] メニューの [オプション] を選択し、[詳細設定] タブをクリックします。次に、[マクロ ウイルス保護] チェック ボックスをオンにします。設定を解除するには、このチェック ボックスをオフにします。
ActiveX コントロールを Visio 図面に挿入するには、まずコントロールをシステムにインストールする必要があります。開発しているアプリケーションでコントロールを使用する場合は、コントロールのデザイン ライセンスが必要な場合があります。
図面に挿入するコントロールは、[コントロール] ダイアログ ボックスから選択します。[コントロール] ダイアログ ボックスには、他のアプリケーションによってインストールされたものも含めて、システムにインストールされているすべての ActiveX コントロールが一覧表示されます。通常、これらのアプリケーションでは、アプリケーションに含まれる ActiveX コントロールの実行時ライセンスが提供されています。実行時ライセンスが付与されたコントロールは、付属されていたアプリケーション内で使用することはできますが、独自のアプリケーションに挿入することはできません。これらのコントロールを独自のアプリケーションに挿入するには、デザイン ライセンスが必要です。詳細については、「セクション 4 Visio ソリューションでの ActiveX コントロールの配布」を参照してください。
図面に ActiveX コントロールを挿入するには
[コントロール] ダイアログ ボックス
図形の場合と同じように、コントロールを選択すると緑色の選択ハンドルが表示されます。このハンドルを使って、図形と同じ方法で移動およびサイズ変更します。
選択されたコントロール
コントロールを編集するには、コントロールをダブルクリックします。このように、埋め込み先編集用に選択されたコントロールは、以下の図のような外観に変わります。これは、Visio アプリケーションでも、他の ActiveX コンテナでも同じです。コントロールのプロパティを設定するには、Visual Basic エディタ () を使用します。
埋め込み先編集のために選択されたコントロール
図面にコントロールを挿入した後は、Visio 図形と同様の方法でコントロールを操作することができます。たとえば、コントロールの切り取り、コピー、貼り付けを行ったり、Ctrl キーを押しながらドラッグして複製したり、ステンシルにドラッグしてマスタシェイプにすることができます。
Visio 図面に初めてコントロールを挿入すると、VBA は、そのコントロール用に結合タイプ ライブラリを作成し、それを .exd という拡張子の付いたファイル名で Temp ディレクトリに保存します。それ以降にコントロールを変更した場合は、先にこのEXD ファイルを削除してから、変更したコントロールを挿入し直します。変更したコントロールを挿入した際にエラー メッセージが表示される場合は、この保存された EXD ファイルを削除すると問題を解決することができます。
コントロールが IClassFactory2 インターフェースをサポートしている場合、Visio エンジンはコントロールの新たなインスタンスを挿入するときに、このインターフェースを使用します。この場合、コントロールが適切にライセンスされたシステムでのみ、コントロールを挿入することができます。コントロールが IClassFactory2 をサポートしていない場合、Visio エンジンは IClassFactory インターフェースを使用してコントロールをインスタンス化します。この場合、ライセンスは関係ありません。
Visio が実行モードの場合、Tab キーを押すと、あるコントロールから図面ぺージ上の別のコントロールにフォーカスが移動します。この Tab キーによるフォーカスの移動順序をタブ オーダーと呼びます。図面に複数のコントロールを追加する場合は、フォーカスを論理的な順序で移動させる必要があります。
コントロールのタブ オーダーは、図面ぺージのコントロールのスタック順序と同じで、最も背面にあるコントロールから始まります。初期設定では、これは、図面にコントロールを挿入した順序で、最後に挿入されたコントロールが最前面になります。
コントロール間のスタック順序を変更するには、[図形] メニューの次のコマンドを使用します。
Visio で使用するために ActiveX コントロールを開発する場合、Visio が定義するアンビエント プロパティを利用することができます。コントロールにアプリケーションのアンビエント プロパティを使用すると、図面上の他のコントロールと調和した外観を維持することができます。たとえば、BackColor プロパティは、コントロールの内側の色を指定します。
Visio アプリケーションによって定義されたアンビエント プロパティを一覧表示するには
アンビエント プロパティは読み取り専用です。
図面の印刷時にコントロールが印刷されないようにする場合は、次の操作を行います。
レイヤーに関する詳細については、「第 11 章 図面内での図形の配置」を参照してください。
コントロールを含むソリューションを配布する場合は、図面上の図形だけをユーザーが編集できるようにして、コントロールは編集できないようにしておくことをお勧めします。デザイン モードの場合にも、図形をロックして図面を保護することによって、ユーザーによるコントロールの変更を防止することができます。
コントロールの変更を防止するには
このようにしておくと、ユーザーは図面を変更することはできますが、コントロールは変更できなくなります。