FlexView

Q12 17
FlexViewの非表示列にカーソルが当たらないようにしたい
[内容]
FlexView内を矢印キーでカーソル移動すると、非表示列のセルにもカーソルが
当たってしまう

A12 17
[解決方法]
表示列のみにカーソルを移動させたい場合、方法は以下の3通りになります。

【方法1】
 非表示列が、ユーザ操作のできないオブジェクト(※1)の場合
  ・FlexViewクラスのCursorMoveプロパティに$INPUTITEMを指定し、操作可能な
   列のセルのみフォーカスされるようにします。
   (CursorMoveプロパティはver4.1.0より追加されました)

 (※1) ユーザ操作のできないオブジェクト
    FlexLabel、FlexIndentLabel、FlexHeader、FlexGroupHeader

【方法2】
 非表示列が、ユーザ操作可能なオブジェクト(※2)の場合
  ・FlexViewクラスのCursorMovedイベントを利用し、イベント発生時の列番号を
   判断して、ColumnPositionをスクリプトで制御します。

 (※2) ユーザ操作可能なオブジェクト
    FlexTextBox、FlexButton,、FlexListBox、FlexCheckBox

【方法3】
 Biz/Browser V Ver5.0.2.0以降を利用している場合、
  ・FlexViewクラスのCursorMoveプロパティに$SKIPHIDDENCOLを指定し、
   列の横幅が「0」以外のセルのみフォーカスされるようにします。

 $SKIPHIDDENCOLの指定はユーザ操作可能・不可能なオブジェクトどちらにも有効です。


[サンプルコード]


左から3番目の項目「FlexTextBox3」を非表示項目とし、OnCursorMovedイベントハンドラ内で
「FlexTextBox3」にカーソルのフォーカスが当たらないように、制御しています。




FlexView FlexView1 {

    FlexRecord FlexRecord1{
        FlexTextBox FlexTextBox1{
            BgColor = $FFCCCC;
            this.Title = this.name;
        }
        FlexTextBox FlexTextBox2{
            BgColor = $FFFFCC;
            this.Title = this.name;

        }
        /* 非表示項目 */
        FlexTextBox FlexTextBox3{
            this.Title = this.name;
            Width = 0;
        }
        FlexTextBox FlexTextBox4{
            BgColor = $CCFFCC;
            this.Title = this.name;
        }
        FlexTextBox FlexTextBox5{
            BgColor = $CCFFFF;
            this.Title = this.name;
        }
    }

    Number nowcol;

    Function OnCursorMoved( e ) {

        if(e.col == 2 && nowcol == 1){
            this.ColumnPosition = 3;
        }
        if(e.col == 2 && nowcol == 3){
            this.ColumnPosition = 1;
        }
        nowcol = this.ColumnPosition;
    }
    this.InsertRow(10);
}
CRSファイル形式のサンプルを
  「FlexView 非表示列にカーソルを移動させないサンプル(Flx_017.zip)
をご利用いただけます。

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