Function Reference


_GUICtrlListView_SimpleSort

Sorts a list-view control (limited)

#include <GuiListView.au3>
_GUICtrlListView_SimpleSort ( $hWnd, ByRef $vSortSense, $iCol [, $bToggleSense = True] )

Parameters

$hWnd Handle to the control
$vSortSense Sets the defined sort order
    True - Sort Descending
    False - Sort Ascending
Use a simple variable for a single column ListView
Use an array for multicolumn ListViews:
    $aArray[0] - Order for first Column
    $aArray[1] - Order for second Column
    $aArray[n] - Order for last Column
$iCol Column number
$bToggleSense [optional] Toggle sort sense
    True - Toggle sort sense after sort (default)
    False - Sort sense unchanged after sort

Return Value

None.

Remarks

This is a basic sort fuction, for advanced sort see GUICtrlRegisterListViewSort().

Toggling sort sense is normal behaviour when sorting is initiated by a click on the column header.
The user can prevent this toggle by setting $bToggleSense to False when calling the function from elsewhere.

If the function is called from within several functions and the sort sense is to be toggled, it is important that $vSortSense be Global in scope.
Otherwise the sense will be reset each time that $vSortSense is created and toggling will be ineffective.

Example

#include <GUIConstantsEx.au3>
#include <GUIListView.au3>
#include <WindowsConstants.au3>

Global $g_idListView, $g_bSortSense = True ; Set initial ascending sort

Example()

Func Example()
        GUICreate("ListView SimpleSort (v" & @AutoItVersion & ")", 300, 300)
        $g_idListView = GUICtrlCreateListView("Item", 10, 10, 280, 240)
        _GUICtrlListView_SetColumnWidth($g_idListView, 0, 260)
        Local $idButton_Add = GUICtrlCreateButton("Add Item", 10, 260, 80, 30)
        Local $idButton_Set = GUICtrlCreateButton("Reset Ascending Sort Order", 110, 260, 180, 30)

        GUISetState(@SW_SHOW)

        GUIRegisterMsg($WM_NOTIFY, "_WM_NOTIFY")

        While 1
                Switch GUIGetMsg()
                        Case $GUI_EVENT_CLOSE
                                ExitLoop
                        Case $idButton_Add
                                Local $sData = Chr(Random(65, 90, 1))
                                GUICtrlCreateListViewItem($sData, $g_idListView)
                                _GUICtrlListView_SimpleSort($g_idListView, $g_bSortSense, 0, False) ; Prevent sort direction toggling for next insertion
                        Case $idButton_Set
                                $g_bSortSense = False ; Reset for ascending sort when next sorted
                EndSwitch
        WEnd
EndFunc   ;==>Example

Func _WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam)
        #forceref $hWnd, $iMsg, $wParam

        Local $hWndListView = $g_idListView
        If Not IsHWnd($g_idListView) Then $hWndListView = GUICtrlGetHandle($g_idListView)
        Local $tNMHDR = DllStructCreate($tagNMLISTVIEW, $lParam)
        Local $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
        Local $iCode = DllStructGetData($tNMHDR, "Code")
        Switch $hWndFrom
                Case $hWndListView
                        Switch $iCode
                                Case $LVN_COLUMNCLICK ; A column was clicked
                                        _GUICtrlListView_SimpleSort($hWndListView, $g_bSortSense, DllStructGetData($tNMHDR, "SubItem")) ; Sort direction for next sort toggled by default
                        EndSwitch
        EndSwitch
        Return $GUI_RUNDEFMSG
EndFunc   ;==>_WM_NOTIFY