ソート履歴(列名と昇順・降順の配列)を与えて、リストボックスをソートする。列番号を取得するために、内部でJCL_lst_ColNumberを使っている。リストボックスの行がダブルクリックされて別ウインドウで内容が編集されたあと、リストボックスのウインドウに戻ってきてリストボックスを再作成するとき、XX01_lstXX_makeでこのメソッドを実行する。
使い方
JCL_lst_Sort (“vA04BU_lstBU”;->vA04BU_lstBU_HeaderNames;->vA04BU_lstBU_SortOrders)
引数
$1: リストボックスのオブジェクト名
$2: ヘッダー名の配列へのポインタ ->(ARRAY TEXT)
$3: 並び順(昇順:1、降順:2)の配列へのポインタ ->(ARRAY LONGINT)
//JCL_lst_Sort
//20160503 wat yabe
// ソート履歴を実行 XX01_lstXX_makeで実行してください
// 呼び元に「ソート履歴」配列が用意されていることが前提
// ソート履歴は、オンロード時とオンアフターソート時に配列に記録します。
// 配列の順番に ソートコマンドを実行します。
// 関連メソッド:xx_frmOnLoad, xx_frmDefInit, xx_lstXX_OnAfgterSort, xx_lstXX_make
C_TEXT($1;$lstboxName)
$lstboxName:=$1
//C_POINTER($1;$lstboxPtr)
//$lstboxPtr:=$1
C_POINTER($2;$aryHeaderNamesPtr)
$aryHeaderNamesPtr:=$2
C_POINTER($3;$arySortOrdersPtr)
$arySortOrdersPtr:=$3
C_LONGINT($i;$sizeOfAry)
$sizeOfAry:=Size of array($aryHeaderNamesPtr->)
If ($sizeOfAry#0)
For ($i;1;$sizeOfAry)
$nr:=JCL_lst_ColNumber ($lstboxName;$aryHeaderNamesPtr->{$i})
If ($arySortOrdersPtr->{$i}=1)
//昇順
LISTBOX SORT COLUMNS(*;$lstboxName;$nr;>)
Else
//降順
LISTBOX SORT COLUMNS(*;$lstboxName;$nr;<)
End if
End for
End if
呼び元に「ソート履歴」配列が用意されていることが前提。 ソート履歴は、オンロード「On Load」時とオンアフターソート「On After Sort」時に配列に追加する。 配列の順番に ソートコマンドが実行される。
関連して修正するメソッド:xx_frmOnLoad, xx_frmDefInit, xx_lstXX_OnAfgterSort, xx_lstXX_make
関連メソッド:JCL_lst_Sort_Append, JCL_lst_Sort_AppendCurrent