リストボックスのタイトル行がクリックされてソートが実行されたときのソート順を配列に取得。あとでソートを実行するときのために保持する。ソート履歴(列名と昇順・降順の配列)に現状を追加。
使い方
JCL_lst_Sort_AppendCurrent (->vA04BU_lstBU;->vA04BU_lstBU_HeaderNames;->vA04BU_lstBU_SortOrders)
引数
$1: リストボックスへのポインタ
$2: ヘッダー名の配列(プロセス変数)へのポインタ ->(ARRAY TEXT)
$3: 並び順(昇順:1、降順:2)の配列(プロセス変数)へのポインタ ->(ARRAY LONGINT)
//JCL_lst_Sort_AppendCurrent
//20160503 wat
//ソート順を覚える、ソート履歴に現状を追加
//XX リストボックス メソッドのOn After Sortで実行する
// JCL_lst_Sort_AppendCurrent (->vMR01_lstMR;->vMR01_lstMR_HeaderNames;->vMR01_lstMR_SortOrders)
// 関連メソッド:xx_frmOnLoad, xx_frmDefInit, xx_lstXX_OnAfterSort, xx_lstXX_make
C_POINTER($1;$lstboxPtr)
$lstboxPtr:=$1
C_POINTER($2;$aryHeaderNamesPtr)
$aryHeaderNamesPtr:=$2
C_POINTER($3;$arySortOrdersPtr)
$arySortOrdersPtr:=$3
C_LONGINT($i;$sizeOfAry)
ARRAY TEXT($arrColNames;0)
ARRAY TEXT($arrHeaderNames;0)
ARRAY POINTER($arrColVars;0)
ARRAY POINTER($arrHeaderVars;0)
ARRAY BOOLEAN($arrColsVisible;0)
ARRAY POINTER($arrStyles;0)
LISTBOX GET ARRAYS($lstboxPtr->;$arrColNames;$arrHeaderNames;$arrColVars;$arrHeaderVars;$arrColsVisible;$arrStyles)
$sizeOfAry:=Size of array($arrHeaderNames)
For ($i;1;$sizeOfAry)
If ($arrHeaderVars{$i}->#0)
APPEND TO ARRAY($aryHeaderNamesPtr->;$arrHeaderNames{$i})
APPEND TO ARRAY($arySortOrdersPtr->;$arrHeaderVars{$i}->)
$i:=$sizeOfAry
End if
End for
リストボックスのタイトル行がクリックされてソートが実行されると「On After Sort」イベントが発生する。ここにイベントハンドラを記述して、このメソッドを実行する。ソート結果のソート順を配列に取得。
リストボックスの行がダブルクリックされて別ウインドウで内容が編集されたあと、このウインドウに戻ってきてリストボックスを再作成するとき、ここで取得したソート順が再現されるため。
関連して修正するメソッド:xx_frmOnLoad, xx_frmDefInit, xx_lstXX_OnAfterSort, xx_lstXX_make
関連メソッド:JCL_lst_Sort_Append, JCL_lst_Sort