表形式表示

Q6
FlexTextBoxにカーソルカラーを設定したい
[内容]
FlexTextBoxにカーソルカラーを設定する方法

A6
[原因]
FlexViewオブジェクトのCursorColorの設定は、FlexTextBoxオブジェクトでは有効になりません。

[解決方法]
FlexViewオブジェクトのCursorMovedのイベントハンドラで、FlexTextBoxオブジェクトのBgColorプロパティを変更することによりカーソルのような動作が可能となります。


[サンプルコード]

Form frmSample1 {
    Width = 400;
    Height = 300;
    /* カレントセルの位置と変更前の背景色を保持するためのArray */
    Array prev;
    prev["Row"] = NULL;
    prev["Col"] = NULL;
    prev["BgC"] = NULL;
 
    FlexView FlexView1 {
        X = 20;
        Y = 20;
        Width = 346;
        Height = 217;
        Border = $TRUE;
        CursorColor = $CCCCFF;
        FlexRecord FlexRecord1 {
            FlexHeader FlexHeader1 {
                Width = 30;
                Numbered = $TRUE;
            }
            FlexLabel FlexLabel1 {
                Title = "FlexLabel";
            }
            FlexTextBox FlexTextBox1 {
                Title = "FlexTextBox";
            }
            FlexTextBox FlexTextBox2 {
                Title = "FlexTextBox2";
            }
        }

        FlexView1 << new CSVDocument << csv {
            a,関東,東京,東池袋店
            a,関東,東京,南池袋店
            a,関東,神奈川,茅ケ崎店
            b,関西,大阪,日本橋店
            b,関西,大阪,西中島店
        };

        Function OnCursorMoved( e ) {
            /* まず、カーソル移動前のセルの背景色を元の設定に戻します */ 
           if(^.prev["Row"] != NULL){
                var p = ^.prev["Row"].GetColumn( ^.prev["Col"] );
                p.BgColor = ^.prev["BgC"];
            }
            /* カレントセルがFlexTextBoxだったら背景色を設定します */
            /* また、カレントセルの位置をArrayに保持します */
            var c = e.Row.GetColumn( e.Col );
            if(c.ClassName == "FlexTextBoxCell"){
                ^.prev["Row"] = e.Row;
                ^.prev["Col"] = e.Col;
                ^.prev["BgC"] = c.BgColor;
                c.BgColor = $9999FF;
            }
        }
    }
}
管理番号:BMP_N004
  Biz-Collections Bizの宝箱 トップへ
  Biz/Browser Mobile・Biz/Designer Mobile TIPS集 トップへ