配列型リストボックスのある列の値を指定して、行を選択する。複数行。
使い方
JCL_lst_SelectRows_byValues (->vA01TB_lstBR;->vA01TB_lstBR_ID;->$arySelBR_ID)
引数
$1: リストボックスオブジェクトのポインタ
$2: リストボックスにアサインされた配列の列(プロセス変数)のポインタ、通常はID列を渡すことになる
$3: アサインされた配列と比較する値を配列に格納してポインタで渡す
//JCL_lst_SelectRows_byValues
//20220118 wat
//リストボックスの行を選択する。複数対応
C_POINTER($1;$inListBoxPtr)
$inListBoxPtr:=$1 //リストボックスのブーリアン配列
C_POINTER($2;$inListBoxDataPtr)
$inListBoxDataPtr:=$2 //リストボックスの対象データ配列
C_POINTER($3;$selValuesAryPtr)
$selValuesAryPtr:=$3 //選択されている行の値を保持する配列のポインタ
C_LONGINT($0;$cnt)
$cnt:=0
C_LONGINT($i;$sizeOfAry)
C_LONGINT($numOfHits)
//すべての行の選択を解除
LISTBOX SELECT ROW($inListBoxPtr->;0;lk remove from selection)
//配列にあるのを選択
$sizeOfAry:=Size of array($inListBoxDataPtr->)
For ($i;1;$sizeOfAry)
//値配列にあればリストを選択
$numOfHits:=Count in array($selValuesAryPtr->;$inListBoxDataPtr->{$i})
If ($numOfHits>0)
LISTBOX SELECT ROW($inListBoxPtr->;$i;lk add to selection)
$cnt:=$cnt+1
End if
End for
$0:=$cnt
単数行を選択する場合は、配列の要素数を一つだけにして渡すか、またはJCL_lst_SelectOneRow_byValueを使う。