id summary reporter owner description type status milestone component version severity resolution keywords cc 1930 _GUICtrlListView_SimpleSort doesn't sort ItemParam BugFix "With new Beta _GUICtrlListView_SimpleSort sorts checkboxes too, but association between item and ItemParam are lost by sort. I've changed this function, so that it also sort ItemParam. Would nice to have this feature generally. Func _GUICtrlListView_SimpleSort($hWnd, ByRef $vDescending, $iCol) If $Debug_LV Then __UDF_ValidateClassName($hWnd, $__LISTVIEWCONSTANT_ClassName) If _GUICtrlListView_GetItemCount($hWnd) Then Local $b_desc If (IsArray($vDescending)) Then $b_desc = $vDescending[$iCol] Else $b_desc = $vDescending EndIf Local $columns = _GUICtrlListView_GetColumnCount($hWnd) Local $items = _GUICtrlListView_GetItemCount($hWnd) Local $temp_item = """" Local $SeparatorChar = Opt('GUIDataSeparatorChar') For $x = 1 To $columns $temp_item = $temp_item & "" "" & $SeparatorChar Next $temp_item = StringTrimRight($temp_item, 1) ;~ Local $a_lv[$items][$columns + 1] Local $a_lv[$items][$columns + 2], $i_selected ; add column for ItemParam ### MODIFIED ### Local $i_selected = StringSplit(_GUICtrlListView_GetSelectedIndices($hWnd), $SeparatorChar) Local $i_checked = StringSplit(__GUICtrlListView_GetCheckedIndices($hWnd), $SeparatorChar) Local $v_item, $iFocused = -1 For $x = 0 To UBound($a_lv) - 1 Step 1 If $iFocused = -1 Then If _GUICtrlListView_GetItemFocused($hWnd, $x) Then $iFocused = $x EndIf _GUICtrlListView_SetItemSelected($hWnd, $x, False) _GUICtrlListView_SetItemChecked($hWnd, $x, False) ;~ For $Y = 0 To UBound($a_lv, 2) - 2 Step 1 For $Y = 0 To UBound($a_lv, 2) - 3 Step 1 ; ### MODIFIED ### $v_item = StringStripWS(_GUICtrlListView_GetItemText($hWnd, $x, $Y), 2) If (StringIsFloat($v_item) Or StringIsInt($v_item)) Then $a_lv[$x][$Y] = Number($v_item) Else $a_lv[$x][$Y] = $v_item EndIf Next $a_lv[$x][$Y] = $x $a_lv[$x][$Y + 1] = _GUICtrlListView_GetItemParam($hWnd, $x) ; read ItemParam ### NEW ### Next _ArraySort($a_lv, $b_desc, 0, 0, $iCol) For $x = 0 To UBound($a_lv) - 1 Step 1 ;~ For $Y = 0 To UBound($a_lv, 2) - 2 Step 1 For $Y = 0 To UBound($a_lv, 2) - 3 Step 1 ; ### MODIFIED ### _GUICtrlListView_SetItemText($hWnd, $x, $a_lv[$x][$Y], $Y) Next _GUICtrlListView_SetItemParam($hWnd, $x, $a_lv[$x][$Y + 1]) ; write ItemParam ### NEW ### For $Z = 1 To $i_selected[0] ;~ If $a_lv[$x][UBound($a_lv, 2) - 1] = $i_selected[$Z] Then If $a_lv[$x][UBound($a_lv, 2) - 2] = $i_selected[$Z] Then ; ### MODIFIED ### ;~ If $a_lv[$x][UBound($a_lv, 2) - 1] = $iFocused Then If $a_lv[$x][UBound($a_lv, 2) - 2] = $iFocused Then ; ### MODIFIED ### _GUICtrlListView_SetItemSelected($hWnd, $x, True, True) Else _GUICtrlListView_SetItemSelected($hWnd, $x, True) EndIf ExitLoop EndIf Next For $Z = 1 To $i_checked[0] ;~ If $a_lv[$x][UBound($a_lv, 2) - 1] = $i_checked[$Z] Then If $a_lv[$x][UBound($a_lv, 2) - 2] = $i_checked[$Z] Then ; ### MODIFIED ### _GUICtrlListView_SetItemChecked($hWnd, $x, True) ExitLoop EndIf Next Next If (IsArray($vDescending)) Then $vDescending[$iCol] = Not $b_desc Else $vDescending = Not $b_desc EndIf EndIf EndFunc ;==>_GUICtrlListView_SimpleSort" Feature Request closed AutoIt None Rejected