FlexView

Q12 25
行の複数選択をしたい

A12 25
[解決方法]
FlexViewの配下に配置したFlexItemオブジェクトのOnClickedイベントハンドラの引数
には、

FlexRow row クリックした項目のFlexRowオブジェクト
Number ShiftKey Shiftキーの押下状態
Number AltKey Altキーの押下状態
Number CtrlKey Ctrlキーの押下状態

が含まれており、これらの引数の情報を基に選択範囲を判断し、背景色を変更する
といった実装でマウスによる複数選択を表現することが出来ます。

また、FormオブジェクトのOnKeyDownイベントハンドラを利用して、
Shiftキー+矢印キー操作による複数選択動作を表現することも可能です。

■クリックによる複数選択例
FlexView FlexView1 {
    /* FlexItemオブジェクトで発生したClickedイベントを
       親オブジェクトで捕捉 */
    Function OnClicked( e ) {

        /* Shiftキーの押下状態をチェック */
        if( e.ShiftKey ) {
            :
            /* 選択行の背景色の設定 */
            sRow = <選択開始行の設定>
            eRow = <選択終了行の設定>
            for( var i = sRow; i <= eRow; i++ ) {
                row_obj = GetRow( i );
                row_obj.FlexLabel1.BgColor = $FFCCCC;
                row_obj.FlexLabel2.BgColor = $FFCCCC;
                row_obj.FlexLabel3.BgColor = $FFCCCC;
            }
        } else if( e.CtrlKey ) {
            :
        } else {
            :
        }
    }
}

サンプルでは、選択を行単位としていますが、OnClickedイベントハンドラの引数の
from(クリックされたオブジェクト情報)や、OnKeyDownイベントハンドラ内でFlexViewの
ColumnPositionプロパティを参照することで、セル単位での範囲選択も実装可能です。

FlexButtonやFlexCheckButtonオブジェクト上でクリックした場合、Clickedイベントは
発生しません。
このため、クリック時の動作を他の列オブジェクトと異なる仕様とする(例えば、
FlexButtonがクリックされたら選択解除する)など個別の対応が必要となります。



他の一覧表示オブジェクトでの複数選択の方法は、以下をご参照ください。

Spreadの場合
  Spread 行の複数選択をしたい

ListViewの場合
  ListView 行の複数選択をしたい


[サンプルコード]



CRSファイル形式のサンプル
  「FlexView 行の複数選択サンプル(Flx_025.zip)
をご参照ください。

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