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

第 7 章 図形動作の機能強化

セクション 2   ショートカット メニュー コマンド

ユーザーが図面ぺージの図形を右クリックすると、選択した図形で実行可能なコマンドがショートカット メニューに表示されます。図形のショートカット メニューと [図形] メニューの [アクション] サブメニューに表示されるコマンドを定義することができます。図形またはぺージの [アクション] セクションの行には、その図形またはぺージで実行できるコマンド名とアクションを定義します。

たとえば、次の数式を評価する "プログラム実行" と呼ばれるアクションを図形に定義することができます。

Action     = RUNADDON("my_prog.exe")

ユーザーが図形を右クリックすると、[プログラム実行] がショートカット メニューに表示されます。[プログラム実行] を選択すると、Visio® エンジンは数式を評価します。この場合は、my_prog.exe プログラムが起動します。


  [イベント] 関係のセルと同様に、[Action] セルは、数式を入力したときではなく、アクションが発生したときに評価されます。


ここでは、数式を使用してショートカット メニュー コマンドを操作する方法について説明します。オートメーションを使用して、ショートカット メニューなどのユーザー インターフェースをカスタマイズすることもできます。詳細については、「第 22 章 Visio ユーザー インターフェースのカスタマイズ」を参照してください。

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

ショートカット メニュー コマンドの定義

ショートカット コマンドのメニューへの表示方法の制御

ショートカット コマンドを使用した図形座標の変更 :例

ショートカット メニュー コマンドの定義

シェイプシート (ShapeSheet®) のセルによって制御される図形動作のほとんどに対して、ショートカット メニュー コマンドを作成することができます。たとえば、図形の [保護] セクションの各種セルのオンとオフを切り替えるショートカット コマンドを作成したり、図形の書式設定セルを変更するコマンドを定義することができます。

図形またはぺージのショートカット メニュー コマンドを定義するには

  1. 図形を選択し、次に [ウィンドウ] メニューから [シェイプシートを表示] を選択します。
  2. ぺージのシートを表示するには、まだ何も選択していないことを確認し、次に [ウィンドウ] メニューから [シェイプシートを表示] を選択します。

  3. [アクション] セクションが表示されない場合は、[挿入] メニューから [セクション] を選択します。[セクションの挿入] ダイアログ ボックスで、[アクション] をオンにし、[OK] をクリックします。
  4. [アクション] セクションがあるけれども表示されない場合は、[表示] メニューから [セクション] を選択します。[セクションの表示] ダイアログ ボックスで、[アクション] を選択し、[OK] をクリックします。

    アクションを追加するには、[アクション] セクションでセルを選択して、右クリックし、ショートカット メニューから [行の挿入] を選択します。

  5. [Action] セルに、ユーザーが [アクション] を選択したときに評価する数式を入力します。
  6. たとえば、SETF 機能を使用する 2 つの平行アクションを作成して次の数式を入力し、図形のテキストをロックしたり、ロックを解除することができます。

    Action 1     = SETF(GetRef(LockTextEdit), true)

    Action 2     = SETF(GetRef(LockTextEdit), false)

  7. [Menu] セルに、ショートカット メニューに表示するコマンド名を入力します。
  8. たとえば、[テキストのロック] コマンドがショートカット メニューに表示されるように、「テキストのロック」を [Action 1] に入力し、[テキストのロック解除] コマンドがその下に表示されるように、[Action 2] に「テキストのロック解除」を入力することができます。

    [Checked] セルを使用して、選択したコマンドにチェック マークを追加したり、[Disabled] セルを使用してコマンドを使用不可にすることもできます。これらのセルの使用方法に関する詳細については、「メニューでのショートカット コマンドの外観の制御」を参照してください。

  9. 必要に応じて、[Prompt] セルに、[アクション] コマンドがメニューで選択された場合に、ステータス バーに表示される説明を入力します。

新しいコマンドをテストするには、図形またはぺージを右クリックし、ショートカット メニューを表示して、定義した [アクション] コマンドを選択します。


ヒント 図形またはぺージに [アクション] セクションを追加した後は、シェイプシート ウィンドウの [編集] メニューから [アクション] コマンドを使用して共通のアクションを手際良く定義することができます。[アクション] セクションのセルを選択するまで、このコマンドは淡色表示されます。[アクション] ダイアログ ボックスで、[メニュー] オプションと [プロンプト] オプションを入力し、アクションを選択して、[OK] をクリックします。[アクション] セクションの対応するセルが更新されます。[指定ぺージへのジャンプ] などのダイアログ ボックスのアクションを選択すると、該当数式がその [Action] セルに入力されます。


ショートカット コマンドのメニューへの表示方法の制御

追加するアクションは、デフォルトでショートカット メニューの一番上に、[アクション] セクションにリストされた順序で表示されます。ショートカット メニューへの [アクション] コマンドの表示方法や位置を制御するには、[Menu] セルに入力するコマンド名に接頭辞を付けます。ショートカット メニューの一番下にコマンドを表示するには、次の構文を使用します。

= "%メニュー項目"

コマンドの上に区切り線を表示するには、次の構文を使用します。

= "_メニュー項目"

コマンドのショートカット キーを作成するには、次のように、ショートカットに使用する文字の前にアンパサンド (&) を付けます。

= "メニュー項目(&M)"

また、コマンドが選択されていることを調べてそれを示す数式を記述したり、特定の状況では使用しないコマンドを淡色表示にする数式を記述したり、ショートカットメニューの 2 つの排他的なコマンドの表示と非表示を切り替える数式を記述したりすることができます。

ショートカット メニューのコマンドのチェック マーク

1 つの図形に複数のショートカット メニュー コマンドを定義する場合は、メニューに表示されるコマンドの横にチェック マークを付けることによって、図形に適用されているコマンドを示すことができます。そのためには、[アクション] 行の [Checked] セルを TRUE に設定します。論理式を使用してユーザー定義セルを参照し、チェック マークを付けたり外したりすることもできます。

たとえば、前の例で [テキストのロック] または [テキストのロック解除] コマンドのどちらかにチェック マークを付けるものとします。そのためには、[テキストのロック] アクションの [Checked] セルに次の数式を入力します。

Checked 1     = LockTextEdit=true

この場合、[LockTextEdit] の値が TRUE であれば、[Checked] セルは数式を TRUE と評価し、コマンド名の横にチェックマークが付けられ、このテキストがロックされていることを示します。また、同様の数式を 2 番目のアクションに入力し、[テキストのロック解除] コマンドにチェック マークを付けることもできます。

Checked 2     = LockTextEdit=false

[テキストのロック解除] には、LockTextEdit が FALSE の場合にチェック マークが付きます。

 



[アクション] セクションで定義したコマンドの横にチェック マークを付けることができます。

メニューのショートカット コマンドを淡色表示にする

図形動作を改良するために、使用しないコマンドを淡色表示にすることができます。たとえば、ユーザーがメニューから [テキストのロック] を選択すると、テキストがロックされ、それ以降はメニューの [テキストのロック解除] しか使用できなくなります。[テキストのロック] コマンド例に対してこれを行うには、[テキストのロック] アクションの [アクション] セクションの [Disabled] セルに次の数式を入力します。

Disabled 1     = LockTextEdit=true

[テキストのロック解除] アクションの [Disabled] セルに同様の数式を入力します。

Disabled 2     = LockTextEdit=false

[Disabled] セルの数式の結果は必ず TRUE または FALSE のどちらかとして評価されます。[テキストのロック] を選択すると、LockTextEdit の値が TRUE になり、[Disabled] セルの式が TRUE と評価され、[テキストのロック] が淡色表示になります。[テキストのロック解除] を選択すると、LockTextEdit が FALSE になり、[Disabled 2] セルの式が TRUE と評価され、[テキストのロック解除] が淡色表示になります。

ショートカット メニューのコマンドの表示と非表示

[テキストのロック] と [テキストのロック解除] の例のように、図形が 2 者択一の状態のうちのどちらか一方の状態しかとらない場合は、条件に合わせて、コマンド名の表示と非表示を切り替えることができます。たとえば、メニュー上にはコマンドを常に 1 つだけ表示することによってユーザー インターフェースを簡素化する場合があります。この場合、テキストがロックされると、ショートカット メニューのコマンドは [テキストのロック解除] になります。テキストのロックが解除されると、コマンドは [テキストのロック] になります。

ショートカット メニューでの表示状態が変わるコマンドを作成するには、[アクション] セクションを 1 行だけにする必要があります。次のような 2 つの論理式を記述します。1 つは [Action] セルに記述する、[LockTextEdit] の値を切り替える式、もう 1 つは [Menu] セルに記述する、[LockTextEdit] の値にもとづいてどちらのコマンドを表示するかを決める式です。

  Action
  Menu

= SETF(GetRef(LockTextEdit),NOT(LockTextEdit))
= IF(LockTextEdit,"Unlock Text","Lock Text")

[LockTextEdit] の値が TRUE の場合、SETF は FALSE を設定します。反対に [LockTextEdit] の値が FALSE の場合、SETF は TRUE を設定します。[Menu] セルの数式は [LockTextEdit] セルも参照します。[LockTextEdit] セルの値が TRUE の場合、[テキストのロック解除] が表示され、FALSE の場合は [テキストのロック] が表示されます。

図形に 3 つ以上の状態やメニュー コマンドがある場合は、[Checked] または [Disabled] セルを使用して使用可能なコマンドを示す方がユーザーには使いやすくなります。


ヒント [イベント] または [アクション] セクションのセルの SETF 関数を使用して、別のセルの 2 つのオプションの値を切り替えたり、別のセルの値を増加したりすることができます。[イベント] または [アクション] セルの数式は、イベントが発生した場合にのみ評価されるので、ループを発生しない SETF 関数を使用して、自己参照数式を記述することができます。たとえば、CellB の値によって CellA の値を切り替える場合は、[イベント] または [アクション] セルで次のような構文を使用します。

SETF(GetRef(cellA), IF(cellB=false, true, false) )

セルの値を 1 だけ増加するには、次の構文を使用します。

SETF(GetRef(cell), cell + 1 )

SETF 関数の構文の詳細については、Visio 製品付属のオンラインヘルプ「開発者用リファレンス」 ([ヘルプ] メニューから [開発者用リファレンス] を選択) の「SETF 関数」を検索してください。


TOPへ

ショートカット コマンドを使用した図形座標の変更 : 例

ショートカット メニュー コマンドを使用して、図形の図形座標を制御することができるので、ユーザーは図形の外観を変更するコマンドを使用できます。たとえば、オンとオフ、開くと閉じる、連結と解放などの 2 つの状態を表す 1 つの図形を作成できます。そのためには、[合成操作] を使用して、シェイプシートに複数の [図形座標] セクションのある合成図形を作成します。合成図形の [アクション] セクションで、1 つの状態を表す [図形座標] セクションの表示/非表示を制御する、ショートカット メニュー コマンドを定義することができます。これを具体的に示すために、次の図に示すように、ひじ掛けを表示したり非表示にしたりすることのできる事務用椅子を作成します。

 



合成図形を右クリックすると表示されるショートカット コマンドを定義することができます。この例では、合成図形のコンポーネント図形の 1 つの図形座標を非表示にするコマンド (A) を選択します。

複数の図形を 1 つの図形に合成するには

  1. 合成図形で使用する図形を作成します。
  2. たとえば、椅子を作成するには、シート、椅子の背もたれ、ひじ掛け用に四角形か楕円を描きます。

  3. 椅子のシェイプを選択します。[図形] メニューから [合成操作] をポイントし、[型抜き/合成] をクリックします。

[アクション] セクションを合成図形に追加し、ショートカット メニュー コマンドを定義するには

  1. [ウィンドウ] メニューから [シェイプシートを表示] をクリックします。
  2. [挿入] メニューから [セクション] をクリックします。[ユーザー定義セル] と [アクション] をオンにし、[OK] をクリックします。
  3. 「User.State」などのようにユーザー定義セルの名前を入力し、値「1」を入力します。
  4. 初期値は TRUE なので、ひじ掛けは表示されています。

  5. [アクション] セクションの最初の行を選択し、[アクション] セクションが合計 2 行になるように、[挿入] メニューから [行] を選択します。
  6. コマンド名と対応するアクションを定義するには、次の数式を入力します。
  7.   Action[1]
      Menu[1]
      Action[2]
      Menu[2]

    = SETF(GetRef(User.State),true)
    = "ひじ掛けを表示する"
    = SETF(GetRef(User.State),false)
    = "ひじ掛けを表示しない"

  8. 椅子のひじ掛けに対応する 2 つの [図形座標] セクションに次の数式を入力します。
  9. Geometryn.NoShow     = NOT(User.State)

    たとえば、椅子のひじ掛けが [図形座標 3] セクションや [図形座標 4] セクションに対応する場合は、次のように入力します。

    Geometry3.NoShow     = NOT(User.State)
    Geometry4.NoShow     = NOT(User.State)

数式の動作の仕組み

[アクション] セルの数式は SETF 関数を使用して、[ひじ掛けを表示する] が選択されたときに [User.State] の値を TRUE に設定し、[ひじ掛けを表示しない] が選択されたときに [User.State] の値を FALSE に設定します。[Menu] セルはこれらのコマンド名を定義します。

パスを表示したり非表示にするには、[User.State] セルの値を参照する [図形座標] セクションの [NoShow] セルに数式を入力します。[NoShow] セルは、[図形座標] セクションによって定義されたパスが表示されるか非表示にされるかを制御します。この場合、両方のひじ掛けはともに表示されるか、ともに非表示になるかのどちらかなので、2 つの対応する [図形座標] セクションの [NoShow] セルに同じ数式を使用します。

式の値がが FALSE の場合、NOT 関数は TRUE を返し、式が TRUE の場合 FALSE を返します。ユーザーが [ひじ掛けを表示しない] を選択すると、[User.State] は FALSE に設定されます。この場合、NOT 関数は TRUE を返し、[NoShow] セルの値が TRUE になり、対応コンポーネントは塗りつぶされて非表示になります。

Top