フォーカス

Q
フォーカスの当たっているオブジェクトの取得
[内容]
画面上にフォーカスのあたってるオブジェクトを取得したい場合、どのようにすればよいのでしょうか
A
フォーカスの当たっているオブジェクトの取得方法としてGetFocusイベントを利用する方法があります。
イベントハンドラの引数として渡されるEventオブジェクトのfromプロパティにはイベント発生元オブジェクトのリファレンスが格納されています。
GetFocusイベント発生元オブジェクトのリファレンスを変数に格納しておくことで、フォーカスのあたっているオブジェクトを判別することが可能です。

サンプルソースでは、フォーカスの当たっているオブジェクトを変数に格納しておき(GetFocusイベントで取得したe.fromを変数に格納)、オブジェクト名をラベルに表示するといった実装を行っています。

なお、Biz/Browser Vでは、Root.GetFocusメソッドでフォーカスの当たっているオブジェクトを
取得できます。

[サンプルコード] ※記述ポイント抜粋
  /* フォーカスの当たっているオブジェクトを格納 */
  Array obj_info;
  
  /* フォーカスが当たっているオブジェクトをラベル表示*/
  Function OnGetFocus ( e ) {
      /* イベント発生元オブジェクトのリファレンスを格納 */
      obj_info[0] = e.from;
      
      /* ラベル初期化 */
      Label3.Clear();
      
      /* オブジェクト名をラベル表示 */
      Label3.value = obj_info[0].name;
      
      /* フォーカスが当たっているオブジェクトがTextBoxの場合 */
      if( obj_info[0] instanceOf TextBox ) {
          obj_info[0].Value = "GetFocus";
          obj_info[0].bgColor = $RED;
      }
  }

上記サンプルソースの記述にもあるように、 Arrayクラスの変数には、Eventオブジェクトのfromプロパティ自体を格納する事ができます。
(var変数には、Eventオブジェクトのfromプロパティ自体を格納する事はできません。)
このように、記述する事で「obj_info[0].name」のようにArrayクラスの変数から、イベント発生元オブジェクトのリファレンスを取得する事ができます。

実際の挙動については、CRSファイル形式のサンプル
   「フォーカスの当たっているオブジェクトの取得方法(Fcs_006.zip)」
をご確認ください。

管理番号:Fcs_006
  Biz-Collections Bizの宝箱 トップへ
  Biz/Browser・Biz/Designer TIPS集 トップへ