フォーカス

Q1
フォーカスが当たっているオブジェクトを分かりやすくしたい  
A1
画面上に複数オブジェクトが存在していると、どのオブジェクトにフォーカスが
当たっているのか、一目で判断しづらいケースがあります。
このような場合、フォーカスの当たっているオブジェクトの枠に色を付けるような
表示を行う事で、フォーカスが当たったオブジェクトが一目で判断しやすくなります。

[サンプルイメージ]
TextBoxにフォーカスが当たっている場合
EditBoxにフォーカスが当たっている場合
Buttonにフォーカスが当たっている場合

上記の画像イメージでは、RootクラスのGetFocusメソッドを利用してフォーカスの
当たっているオブジェクトを判別し、対象のオブジェクトとより少しサイズの大きい
Labelオブジェクトを背面にセットする事で、フォーカスが当たったオブジェクトの枠に
色が付いたような表示を実現しています。

[サンプルコード]
Form Fcs50_003 {
    ・・・(略)・・・
    Label lbl_target {
        X = 378;
        Y = 134;
        Width = 81;
        Height = 57;
        BgColor = $RED;
    }
    ・・・(略)・・・
    Function OnGetFocus( e ) {
        /* ターゲット(ラベル)のセット処理 */
        target_set();
    }

    Function target_set(){
        /* フォーカスの当たっているオブジェクトを取得する */
        var obj = //.GetFocus();
        
        /* フォーカスが当たっているオブジェクトを判断し、
           色を設定する */
        if(obj.Name != ""){
            /* TextBoxの場合 */
            if(obj instanceof TextBox){
                lbl_target.BgColor = $GREEN;
            /* Buttonの場合 */
            }else if(obj instanceof Button){
                lbl_target.BgColor = $BLUE;
            /* その他 */
            }else{
                lbl_target.BgColor = $RED;    
            }
            
            /* ターゲット(ラベル)の位置を計算し、設定する */
            lbl_target.X = obj.X - 2;
            lbl_target.Y = obj.Y - 2;
            lbl_target.Width = obj.Width + 4;
            lbl_target.Height = obj.Height + 4;
        }
    }
}

実際の挙動については、CRSファイル形式のサンプル
    「フォーカスが当たっているオブジェクトを分かりやすくしたい(Fcs50_003.zip)」
をご確認ください。

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