画面・帳票サポートシステム XMAP3 開発ガイド


8.8 フォーカスとカーソル

フォーカスまたはカーソルが位置づいているオブジェクトは,ユーザが操作できる状態になっています。オブジェクトに対する操作は,必ずマウス,またはキーボードでフォーカス・カーソルを位置づけたあとで行います。

フォーカスとは,オブジェクトに対して入力権があることを示す印です。キー制御は,この入力権のあるオブジェクトに対して行われます。カーソルは,フォーカスのあるオブジェクトがキーボードからデータ入力できる状態であるとき,その一文字に対し,入力権があることを示す印です。データの入力や削除は,カーソル位置が示す個所が対象となります。

〈この節の構成〉

(1) 表示形式と制御方法

(a) 表示形式

[図データ]

(b) 制御方法

XMAP3では,フォーカス・カーソルを次のように制御します。これらの制御方法はドローセットアップで設定します。詳細については「3.4.4 カーソル・フォーカス制御の変更」を参照してください。

  • フォーカスとカーソルを同時に制御する

    フォーカスとカーソルを共通の項目を使用して制御します。フィールドボックスを定義した画面で,プッシュボタンボックスのフォーカス位置を制御する場合には,フォーカスとカーソルを別々に制御してください。

  • フォーカスとカーソルを別々に制御する

    フォーカス位置とカーソル位置の情報を格納する項目が別々に生成されます。なお,フォーカスとカーソルを別々に制御する場合は,カーソルの種類を次の三つから選びます。

    論理カーソル

    カーソル位置をカーソル定数で制御する通常の制御方法です。カーソル定数はXMAP3が生成するため,画面のオブジェクトの位置を変更してもAPを変更する必要はありません。

    行列(2進)カーソル

    カーソル位置を2進数の行列位置で制御します。行列での制御を特に必要とする場合に使用します。画面のフィールドの位置を変更した場合,APの設定値も合わせて変更する必要があります。

    行列(10進)カーソル

    カーソル位置を10進数の行列位置で制御します。行列での制御を特に必要とする場合に使用します。画面のフィールドの位置を変更した場合,APの設定値も合わせて変更する必要があります。

(2) 初期フォーカス・カーソル

各ダイアログのフォーカス・カーソル設定によって,画面を表示したとき,最初にフォーカス・カーソルを位置づけるオブジェクトを設定できます。

(3) 初期フォーカス・カーソルのAPからの設定

フォーカス定数またはカーソル定数という値を論理マップに代入すると,初期フォーカスを位置づけるオブジェクトをAPから設定できます。これらの値が設定されていないと,ドローで定義した初期フォーカス・カーソルの指定が採用されます。フォーカス定数およびカーソル定数については,マニュアル「XMAP3 プログラミングガイド」の「定数部の論理マップ生成規則とマッピング規則」の説明を参照してください。

(4) フォーカス・カーソルの移動順序

タブキーを押したり,メニューを選択したりしたあと,フォーカス・カーソルが次の項目やフィールドに移動するときの順序です。標準では,画面の左上から右下に移動します。グループボックスで囲まれている複数のオブジェクトは,一つのオブジェクトとして見なされます。

[図データ]

フォーカス対象外

プッシュボタンにフォーカスが遷移しないように設定できます。フォーカス対象外については「8.5.10(6) フォーカスが遷移しないボタン(マウスでの選択だけ有効)」を参照してください。

(5) グループ間のフォーカス順設定

グループボックスで囲まれたオブジェクトのフォーカス順序を設定できます。フォーカス順はAPから動的変更できません。入力単位が「フィールド」のときは,APからフォーカス・カーソルを設定するのでフォーカス順の設定は無効になります。

(a) オブジェクトの遷移条件

オブジェクトの遷移条件を示します。オブジェクトの種類によって,指定できるものが異なります。

キーエントリ系オブジェクトの場合
  • 手動スキップ・右寄せ

    入力データが桁数に満たない場合,[Tab]キーで次の入力/選択できる領域にフォーカス・カーソルを移動すると,入力データが右寄せで表示されます。

  • 手動スキップ・全桁必須

    一文字でも入力した場合,桁数いっぱいに入力しなければ入力エラーになり,[Tab]キーでのフォーカス・カーソル移動ができなくなります。

  • 手動スキップ

    桁数いっぱいまで入力し,[Tab]キーを押すとフォーカス・カーソルが次の入力/選択できる領域に移動します。桁数を超えるデータを入力するとエラーになります。

  • 自動スキップ

    桁数いっぱいまで入力すると,フォーカス・カーソルが次の入力/選択できる領域に自動的に移動します。

選択エントリ系オブジェクトの場合
  • 自動スキップ(選択したら次のボックス・ボタン・項目にフォーカスを移す)

    ボックス内での選択操作が終わると,フォーカス対象の次のボックスへフォーカスが自動的に遷移します。複数選択できるオブジェクト(複数選択リストボックス,チェックボタンボックス)の場合は,末尾の候補が選択されるとフォーカスが遷移します。

(b) フォーカス移動順序の設定

フォーカス順序の設定は,ドローの[属性]−[フォーカス順序設定開始]メニューを選びます。

フォーカス順序を設定するメニューを次に示します。

  • フォーカス順序設定解除

  • フォーカス順序設定開始

  • フォーカス順序設定終了

  • フォーカス順序設定取消

  • フォーカスを位置順に設定

  • フォーカスを途中から設定

上記のメニューを使用してフォーカス順序を設定します。次に,「フォーカス順序設定開始」を選択したときのレイアウト画面を次の図に示します。

図8‒17  フォーカス順序設定開始の画面

[図データ]

  • フォーカス順序の対象となる条件

    入力項目(入力操作が伴うオブジェクト)に対してフォーカスを位置づけることができます。オブジェクトにフォーカス順序を位置づけるためには,グループボックスで囲む必要があります。ただし,プッシュボタンボックスでフォーカス対象外に指定した場合は,フォーカス順序の対象外になります。

    フォーカス順序を設定するときには,設定するすべてのオブジェクトがレイアウト領域上に表示されるようにする必要があります。表示されていない場合,レイアウト領域を広げるかズームで全体が見えるようにしてから設定してください。

    また,同一グループ内に,プッシュボタン(フォーカス対象外)以外のフォーカス対象オブジェクトがある場合は,グループにはフォーカスが位置づきます。ただし,プッシュボタンボックスにはフォーカスは位置づきません。

  • 標準のフォーカス順序

    [フォーカス順序設定開始]メニューで決められるフォーカス順序は,次に示すように左から右,上から下の順になります。

    [図データ]

    [フォーカスを位置順に設定]を選んだ場合も,上記と同じフォーカス順序になります。

  • フォーカス位置の設定

    各ボックスのフォーカス位置を任意の位置から任意の順番で設定する場合,マウスで設定順にクリックしていきます。

    [図データ]

  • 先頭位置以外からのフォーカス順序の設定

    画面に定義したグループの任意の位置からのフォーカス順序を変更したい場合は,[フォーカスを途中から設定]メニューを使用します。[フォーカスを途中から設定]メニューを選ぶと何番目のオブジェクトから変更するかを問い合わせるフォーカススキップダイアログが表示されます。

    [図データ]

  • フォーカス順序設定の解除

    [フォーカス順序設定開始]メニューを使用して設定したフォーカス順序を,画面での配置順に戻す場合は,[属性]メニューの[フォーカス順序設定解除]を選びます。

(6) フォーカス設定の動的変更

画面が表示されたときに,どのオブジェクトにフォーカスを位置づけるかをAPで指定できます。動的変更については,「8.2.4 表示属性の動的変更」,マニュアル「XMAP3 プログラミングガイド」を参照してください。

(7) カーソル制御項目とフィールドボックスの関連づけ

ドローセットアップで「フォーカスとカーソルを別々に制御する」と設定して作成した画面に,フィールドボックスを2個以上配置した場合,カーソル制御項目とフィールドボックスの関連づけを変更するには,ドローの[属性]−[カーソル制御]メニューを選択して,カーソル制御ダイアログを開きます。カーソル制御ダイアログを次の図に示します。

図8‒18 カーソル制御ダイアログ

[図データ]

リストボックス中の,変更したいフィールドボックスの行と列が表示されている行をクリックすると,下段の編集領域に,フィールドボックスの行,列,およびカーソル制御項目名が表示されます。入力カーソル制御項目名が表示されているボックスの右端のボタンをクリックすると,カーソル制御項目の一覧が表示されます。その中から,変更したいカーソル制御項目名を選択してください。

ほかのフィールドボックスが,選択したカーソル制御項目に関連づいていた場合には,そのフィールドボックスには,どのフィールドボックスとも関連づけられていないカーソル制御項目名が,代わりに割り当てられます。