Visio® エンジンには、イベントをトリガしたり、イベントに応答するさまざまな方法が用意されています。マクロを実行したり、イベントに応答して別の図面ぺージに移動したりするアクションを実行する数式を、シェイプシート (ShapeSheet®) セルに入力できます。これらの数式は、[イベント] セクションでいくつかのイベントを処理するために使用されたり、あるいは別のセルで使用されます。また、DEPENDSON 関数を使用して、ユーザー定義セクション内で別のイベントをシミュレーションすることもできます。DEPENDSON 関数の他にも、イベント処理時に特に便利な関数もいくつかあります。
Visio エンジンでは、イベントを処理するコードを作成するオートメーションを使用することもできます。オートメーションを使用すれば、Microsoft Visual Basic for Applications (VBA) プログラム、スタンドアロン プログラム、その他の高度なイベント ハンドリングを使用する強力なソリューションを開発することができます。詳細については、「第 21 章 Visio のイベントの処理」を参照してください。
このセクションの内容...
DEPENDSON 関数を使用したイベントのシミュレーション
イベントを処理する Visio 数式を作成することによって、特定のユーザー アクションに対する図形の応答を定義することができます。ユーザーが次の表の 4 つのアクションのうちの 1 つを実行すると、該当するシェイプシート セルの数式が評価され、そのアクションが実行されます。シェイプシート ウィンドウの [イベント] セクションには、次のようなセルがあります。ユーザーが、これらのアクションのいずれかを実行すると、セルの数式が評価されます。
[イベント] セクション セル
セル | 数式をトリガーするイベント |
---|---|
TheText | 図形のテキストまたはその書式設定が変更されたときか、テキストのレイアウト調整が必要なとき。 |
EventXFMod | ぺージ上の図形の位置、サイズ、向きが変更されたとき。 |
EventDblClick | 図形がダブルクリックされたとき。 |
EventDrop | 貼り付け、複製、または図形の Ctrl + ドラッグ、またはマスタシェイプのドラッグアンドドロップによってインスタンスが新規作成されたとき。 |
TheData | 今後の Visio での使用に備えて予約済み。 |
[イベント] セクション セルに数式を入力することによって、図形の各イベントへの応答の仕方を定義します。ほとんどのシェイプシート数式とは異なり、イベント数式は、数式を入力したときやセルが数式の変更によって参照されたときではなく、イベントが発生したときにのみ評価されます。つまり、[イベント] セルは他のシェイプシート セルとは多少異なった動作をするということです。
= Width
> 1 in.
この数式は TRUE または FALSE を返します。ただし、図形がサイズ変更されたときではなく、ユーザーが図形をダブルクリックしたときに数式が評価されるので、セルに表示されている値は、前回その図形がダブルクリックされたときの状態を反映しています。
DEPENDSON 関数を使用して、[スクラッチ] セクションなどの他のシェイプシート セクション内でイベントをシミュレーションすることができます。この関数を使用すると、[イベント] セクションに定義したイベント以外のイベントに応答することができます。また、イベント処理を細かく制御することもできます。
たとえば、[スクラッチ] セルに次の数式を入力すると、図形が移動するたびに Visio エンジンは、その図形のテキスト ブロックを開きます。
OPENTEXTWIN() + DEPENDSON(PinX, PinY)
また、[スクラッチ] セルに次の数式を入力すると、図形がどちらかの方向に反転するたびに、アドオンの my_prog.exe が起動されます。
RUNADDON("my_prog.exe") + DEPENDSON(FlipX, FlipY)
注 DEPENDSON 関数を [イベント] または [アクション] セルで使用しても、何の効果もありません。詳細については、Visio 製品付属のオンラインヘルプ「開発者用リファレンス」 ([ヘルプ] メニューから [開発者用リファレンス] を選択) の「dependson」を検索してください。
Visio エンジンには、値を計算するのではなく、アクションを実行する関数があります。これらの関数は、イベント数式では特に便利です。次の表は、関数の一部です。関数の完全な一覧と関数の構文に関する詳細については、Visio 製品付属のオンラインヘルプ「開発者用リファレンス」 ([ヘルプ] メニューから [開発者用リファレンス] を選択) の「関数」を検索してください。
イベント数式で使用する関数
関数名 | 説明 |
---|---|
CALLTHIS("プロシージャ", ["プロジェクト"],[引数 1,引数 2,...)
|
VBA プロジェクトのプロシージャを呼び出し、そのプロシージャに、評価対象の CALLTHIS 数式を含むシェイプ オブジェクトへの参照を、その数式に指定されている引数といっしょに渡します。例を次に示します。
CALLTHIS("ThisDocument.myProc",,Height, CALLTHIS 関数文字列にコードを入れることもできます。VBA の [イミディエイト] ウィンドウに入力することのできる命令文はすべて、CALLTHIS の引数として指定できます。 |
GOTOPAGE("ページ名")
|
指定されたぺージを現在アクティブなウィンドウに表示します。ここでは、URL も使用できます。
GOTOPAGE("Page-2") |
OPENFILE("ファイル名")
|
新しいウィンドウにファイルを開きます。複数のファイルを指定すると、要求は待ち行列に入れられ、評価順に実行されます。最後に名前が指定された図面が最後にフォーカスを受け取ります。現在の Visio 図面に対して、ビジュアルな埋めこみ先編集がアクティブになっている場合、新しい Visio インスタンスは要求されたファイル名で起動されます。 |
OPENSHEETWIN()
|
この数式を含む図形を示すシェイプシート ウィンドウを開いて表示します。 |
OPENTEXTWIN()
|
この数式を含む図形のテキスト ブロックを開きます。これは、図形の [EvtDblClick] セルのデフォルト数式です。 |
PLAYSOUND("ファイル名"| "alias", isAlias,beep,synch)
|
サウンド カードを備えたシステムでは、ファイル名に入力された音声が再生されます。また、isAlias がゼロ以外であれば音声のシステム エイリアスが再生されます。音声を再生できない場合は、ビープ音でエラーであることが示されます。音声は非同期か同期で再生できます。例を次に示します。
PLAYSOUND ("chord.wav", 0, 0, 0) 警告ビープ音なしで、WAVE オーディオ ファイル CHORD.wav を再生します。 |
RUNDADDON("string")
|
指定されたマクロまたはアドオンを起動します。 |
アドオンを起動し、それに指定された引数文字列を渡します。 | |
SETF(GetRef(cell), formula)
|
数式の式の結果は、評価されて指定セルの新しい数式になります。数式が引用符で囲まれている場合は、引用された式がセルに書き込まれます。例を次に示します。
SETF (GetRef(Scratch.A1), Scratch.A1+1) 数式「=Scratch.A1+1」を評価し、[Scratch.A1] セルの数式を、その結果に設定します。これは前の値に 1 を加えたものです。 |
イベント数式はイベントが発生するたびに評価されるので、イベント数式はシェイプの使用可能性とパフォーマンスに影響します。次の一般的なガイドラインに従ってください。