有効な次画面
マクロ・ランタイムによるマクロ画面の処理方法で説明したとおり、マクロ・ランタイムは通常、現行マクロ画面の <nextscreens> エレメント内を検索して、次のマクロ画面になる候補であるマクロ画面の名前を見つけます。つまり、マクロ画面自体の中に、次の処理対象として有効なマクロ画面の リストが含まれています(入り口画面と一時画面は例外です。入り口画面、出口画面、および一時画面を参照してください)。
マクロ・エディターでは、「リンク」タブをユーザー・インターフェースとして使用して、マクロ画面の <nextscreens> エレメントに候補マクロ画面の名前を保管します。図 1 に、「リンク」タブの例を示します。
図 1. 「リンク (Links)」タブの例
前記の図で、タブの最上部にある「画面名 (Screen Name)」リスト・ボックスには、マクロ全体の マクロ画面すべてのリストがあります。現在選択されているマクロ画面は Screen1 です。右側の「有効な次の画面」リスト・ボックスは、Screen1 の候補マクロ画面をリストしています (Screen1 の <nextscreens> エレメントの名前があるこのリスト・ボックスと、マクロの再生時にマクロ・ランタイムが使用する有効な次画面のリストを混同しないでください)。左側の「使用可能な画面 (Available Screens)」リスト・ボックスは、 他のマクロ画面すべての名前をリストしています。前の図では「使用可能な画面 (Available Screens)」リストに画面が 1 つしか 示されていませんが、これはこの図がマクロ画面を 2 つしか 含まない (Screen1 と Screen2) マクロのものだからです。その代わりに、20 個の画面からなるマクロを考え、新規マクロ画面 ScreenR の <nextscreens> リストにマクロ画面を追加したいとします。次の手順で行います。
- 「リンク (Links)」タブで、「画面名 (Screen Name)」リスト・ボックスを 展開し、ScreenR が見付かるまでスクロールダウンする。
- ScreenR を選択する。
- ScreenR は新規画面なので、右側の「有効な次画面 (Valid Next Screens)」 リストにマクロ画面名はリストされません。
- 左側の「使用可能な画面 (Available Screens)」リスト・ボックスには、 マクロ内のマクロ画面すべての名前があります。
- ScreenR のリストに追加する画面を選択する。ScreenS を選択したとします。
- ScreenS を選択した後、2 つのリスト・ボックスの間にある右矢印のボタンを クリックする。ScreenS が右側のリスト・ボックスに追加され、左側の リスト・ボックスから除去されます。
- 同じように、追加したい他のマクロ画面の名前を ScreenR の「有効な次画面 (Valid Next Screens)」リスト・ボックスに移動する。
- 以下の合計 3 つの画面名を移動したとします: ScreenS、ScreenG、および ScreenY。
コード・エディターでは、有効な次のマクロ画面の名前 ScreenS、ScreenG、ScreenY が、図 2 に示すように ScreenR の中に保管されていることが分かります。
図 2. <nextscreens> エレメントがあるマクロ画面 ScreenR
前の図では、ScreenR の <screen> エレメントの name 属性は "ScreenR" に設定されています。内側には、<screen> エレメントの以下の 3 つの基本構造エレメントがあります: <description> エレメント、<actions> エレメント、および <nextscreens> エレメント。<description> エレメントと <actions> エレメントの内容は示されていませんが、省略符号 (...) として表されています。<nextscreens> エレメントには 3 つの <nextscreen> エレメントがあり、それぞれの <nextscreen> エレメントには、以下の有効な次画面のいずれかの名前があります: ScreenS、 ScreenG、 および ScreenY。<screen name="ScreenR" entryscreen="true" exitscreen="false" transient="false">
<description>
...
</description>
<actions>
...
</actions>
<nextscreens>
<nextscreen name="ScreenS"/>
<nextscreen name="ScreenG"/>
<nextscreen name="ScreenY"/>
</nextscreens>
</screen>
ランタイム処理について詳しくは、マクロ・ランタイムによるマクロ画面の処理方法を参照してください。