8.8 フォーカスとカーソル
フォーカスまたはカーソルが位置づいているオブジェクトは,ユーザが操作できる状態になっています。オブジェクトに対する操作は,必ずマウス,またはキーボードでフォーカス・カーソルを位置づけたあとで行います。
フォーカスとは,オブジェクトに対して入力権があることを示す印です。キー制御は,この入力権のあるオブジェクトに対して行われます。カーソルは,フォーカスのあるオブジェクトがキーボードからデータ入力できる状態であるとき,その一文字に対し,入力権があることを示す印です。データの入力や削除は,カーソル位置が示す個所が対象となります。
- 〈この節の構成〉
(1) 表示形式と制御方法
(b) 制御方法
XMAP3では,フォーカス・カーソルを次のように制御します。これらの制御方法はドローセットアップで設定します。詳細については「3.4.4 カーソル・フォーカス制御の変更」を参照してください。
-
フォーカスとカーソルを同時に制御する
フォーカスとカーソルを共通の項目を使用して制御します。フィールドボックスを定義した画面で,プッシュボタンボックスのフォーカス位置を制御する場合には,フォーカスとカーソルを別々に制御してください。
-
フォーカスとカーソルを別々に制御する
フォーカス位置とカーソル位置の情報を格納する項目が別々に生成されます。なお,フォーカスとカーソルを別々に制御する場合は,カーソルの種類を次の三つから選びます。
- 論理カーソル
-
カーソル位置をカーソル定数で制御する通常の制御方法です。カーソル定数はXMAP3が生成するため,画面のオブジェクトの位置を変更してもAPを変更する必要はありません。
- 行列(2進)カーソル
-
カーソル位置を2進数の行列位置で制御します。行列での制御を特に必要とする場合に使用します。画面のフィールドの位置を変更した場合,APの設定値も合わせて変更する必要があります。
- 行列(10進)カーソル
-
カーソル位置を10進数の行列位置で制御します。行列での制御を特に必要とする場合に使用します。画面のフィールドの位置を変更した場合,APの設定値も合わせて変更する必要があります。
(3) 初期フォーカス・カーソルのAPからの設定
フォーカス定数またはカーソル定数という値を論理マップに代入すると,初期フォーカスを位置づけるオブジェクトをAPから設定できます。これらの値が設定されていないと,ドローで定義した初期フォーカス・カーソルの指定が採用されます。フォーカス定数およびカーソル定数については,マニュアル「XMAP3 プログラミングガイド」の「定数部の論理マップ生成規則とマッピング規則」の説明を参照してください。
(4) フォーカス・カーソルの移動順序
タブキーを押したり,メニューを選択したりしたあと,フォーカス・カーソルが次の項目やフィールドに移動するときの順序です。標準では,画面の左上から右下に移動します。グループボックスで囲まれている複数のオブジェクトは,一つのオブジェクトとして見なされます。
- フォーカス対象外
-
プッシュボタンにフォーカスが遷移しないように設定できます。フォーカス対象外については「8.5.10(6) フォーカスが遷移しないボタン(マウスでの選択だけ有効)」を参照してください。
(5) グループ間のフォーカス順設定
グループボックスで囲まれたオブジェクトのフォーカス順序を設定できます。フォーカス順はAPから動的変更できません。入力単位が「フィールド」のときは,APからフォーカス・カーソルを設定するのでフォーカス順の設定は無効になります。
-
レイアウト領域上のすべてのデータ入力用オブジェクトをグループボックスで囲みます。
フォーカスは,ここで指定したグループボックス単位となります。
-
[属性]−[フォーカス順序設定開始]コマンドを選びます。
フォーカス移動の順序が表示されます。新規の設定の場合は,オブジェクトの位置順(左から右,上から下の順)に設定されます。
-
[属性]−[フォーカスを途中から設定]コマンドを選び,表示されるダイアログで変更を開始する番号を指定します。
例えば,1から3番目の順序をそのままにして4番目から変更する場合は,ダイアログで「4」を指定します。
1番目から変更する場合はこの手順は不要です。
-
フォーカスを移動する順に,グループボックスをクリックしていきます。
例えば,手順3.で「4」を指定した場合,4以上のボックスをクリックしていきます。
-
[属性]−[フォーカス順序設定終了]コマンドを選びます。
フォーカス順序が設定され,フォーカス順序の番号表示が消えます。
(a) オブジェクトの遷移条件
オブジェクトの遷移条件を示します。オブジェクトの種類によって,指定できるものが異なります。
- キーエントリ系オブジェクトの場合
-
-
入力データが桁数に満たない場合,[Tab]キーで次の入力/選択できる領域にフォーカス・カーソルを移動すると,入力データが右寄せで表示されます。
-
一文字でも入力した場合,桁数いっぱいに入力しなければ入力エラーになり,[Tab]キーでのフォーカス・カーソル移動ができなくなります。
-
桁数いっぱいまで入力し,[Tab]キーを押すとフォーカス・カーソルが次の入力/選択できる領域に移動します。桁数を超えるデータを入力するとエラーになります。
-
桁数いっぱいまで入力すると,フォーカス・カーソルが次の入力/選択できる領域に自動的に移動します。
-
- 選択エントリ系オブジェクトの場合
(b) フォーカス移動順序の設定
フォーカス順序の設定は,ドローの[属性]−[フォーカス順序設定開始]メニューを選びます。
フォーカス順序を設定するメニューを次に示します。
-
フォーカス順序設定解除
-
フォーカス順序設定開始
-
フォーカス順序設定終了
-
フォーカス順序設定取消
-
フォーカスを位置順に設定
-
フォーカスを途中から設定
上記のメニューを使用してフォーカス順序を設定します。次に,「フォーカス順序設定開始」を選択したときのレイアウト画面を次の図に示します。
-
入力項目(入力操作が伴うオブジェクト)に対してフォーカスを位置づけることができます。オブジェクトにフォーカス順序を位置づけるためには,グループボックスで囲む必要があります。ただし,プッシュボタンボックスでフォーカス対象外に指定した場合は,フォーカス順序の対象外になります。
フォーカス順序を設定するときには,設定するすべてのオブジェクトがレイアウト領域上に表示されるようにする必要があります。表示されていない場合,レイアウト領域を広げるかズームで全体が見えるようにしてから設定してください。
また,同一グループ内に,プッシュボタン(フォーカス対象外)以外のフォーカス対象オブジェクトがある場合は,グループにはフォーカスが位置づきます。ただし,プッシュボタンボックスにはフォーカスは位置づきません。
-
[フォーカス順序設定開始]メニューで決められるフォーカス順序は,次に示すように左から右,上から下の順になります。
[フォーカスを位置順に設定]を選んだ場合も,上記と同じフォーカス順序になります。
-
フォーカス位置の設定
各ボックスのフォーカス位置を任意の位置から任意の順番で設定する場合,マウスで設定順にクリックしていきます。
-
先頭位置以外からのフォーカス順序の設定
画面に定義したグループの任意の位置からのフォーカス順序を変更したい場合は,[フォーカスを途中から設定]メニューを使用します。[フォーカスを途中から設定]メニューを選ぶと何番目のオブジェクトから変更するかを問い合わせるフォーカススキップダイアログが表示されます。
-
フォーカスを位置順に設定
フォーカス順序をオブジェクトの位置順に設定したい場合,[属性]メニューの[フォーカスを位置順に設定]を選びます。すべてのフォーカス順序がオブジェクトの位置順(左から右,上から下の順)に設定されます。
-
フォーカス順序設定の解除
[フォーカス順序設定開始]メニューを使用して設定したフォーカス順序を,画面での配置順に戻す場合は,[属性]メニューの[フォーカス順序設定解除]を選びます。
この場合,フォーカス順序はオブジェクトの位置順(左から右,上から下の順)となります。
-
フォーカス順序設定の取消
フォーカス順序の設定を途中でキャンセルする場合,[属性]−[フォーカス順序設定取消]コマンドを選びます。[フォーカスを途中から設定]での設定が無効になり,元の設定に戻ります。
-
プッシュボタンボックスへのフォーカス遷移
「フォーカス対象外」の属性を指定しているプッシュボタンボックスはフォーカス移動の対象になりません。
(6) フォーカス設定の動的変更
画面が表示されたときに,どのオブジェクトにフォーカスを位置づけるかをAPで指定できます。動的変更については,「8.2.4 表示属性の動的変更」,マニュアル「XMAP3 プログラミングガイド」を参照してください。
(7) カーソル制御項目とフィールドボックスの関連づけ
ドローセットアップで「フォーカスとカーソルを別々に制御する」と設定して作成した画面に,フィールドボックスを2個以上配置した場合,カーソル制御項目とフィールドボックスの関連づけを変更するには,ドローの[属性]−[カーソル制御]メニューを選択して,カーソル制御ダイアログを開きます。カーソル制御ダイアログを次の図に示します。
リストボックス中の,変更したいフィールドボックスの行と列が表示されている行をクリックすると,下段の編集領域に,フィールドボックスの行,列,およびカーソル制御項目名が表示されます。入力カーソル制御項目名が表示されているボックスの右端のボタンをクリックすると,カーソル制御項目の一覧が表示されます。その中から,変更したいカーソル制御項目名を選択してください。
ほかのフィールドボックスが,選択したカーソル制御項目に関連づいていた場合には,そのフィールドボックスには,どのフィールドボックスとも関連づけられていないカーソル制御項目名が,代わりに割り当てられます。