データウィンドウで Shift キーや Ctrl キーを使って複数行を選択する

PowerBuilder Tips

方法

データウィンドウで Shift キーを押しながら連続した行を選択したり、Ctrl キーで任意の複数行を選択したりする場合は RowFocusChanging イベント内で KeyDown 関数を呼び出してキーの押下状態を判定します。

KeyDown 関数は特定のキーが押下されているかを判定することができます。また、RowFocusChanging イベントは現在フォーカスのある行と、これからフォーカスが移動しようとしている行が引数として渡されます。

連続した行を選択状態にする場合は、Shift キーが押下されているか KeyDown 関数で判定し、現在フォーカスのある行 (currentrow) から移動先の行 (newrow) までを SelectRow で選択状態にします。

また、連続しない任意の行を複数選択したい場合は Ctrl キーが押下されている事を判定し、フォーカス行が変更される際に選択状態を初期化しないようにします。

【例】

データウィンドウコントロールの RowFocusChanging イベント

long ll_row, ll_start, ll_end

// Ctrl キーが押されていない場合は選択状態を初期化
IF NOT KeyDown(KeyControl!) THEN
    FOR ll_row = 1 TO this.RowCount()
        this.SelectRow(ll_row, FALSE)
    NEXT
END IF

// Shift キーが押されている場合は新しい行まで連続して選択する
IF KeyDown(KeyShift!) THEN
    ll_start = Min(currentrow, newrow)
    ll_end = Max(currentrow, newrow)
    
    FOR ll_row = ll_start TO ll_end
        this.SelectRow(ll_row, TRUE)
    NEXT
ELSE
    this.SelectRow(newrow, TRUE)
END IF

 

Tips情報

プロダクト :PowerBuilder

バージョン :2017R3

Tips 一覧を見る
PowerBuilder マイグレーション