UDF > GUI > GuiListView >


_GUICtrlListView_SimpleSort

Trie un contrôle ListView (limité)

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

Paramètres

$hWnd Handle du contrôle
$vSortSense Définit l'ordre de tri:
    True - Tri décroissant
    False - Tri croissant
Utilisez une variable simple pour une seule colonne ListView
Utilisez un tableau pour un ListView à plusieurs colonnes:
    $aArray[0] - Ordre du tri pour la première colonne
    $aArray[1] - Ordre du tri pour la deuxième colonne
    $aArray[n] - Ordre du tri pour la dernière colonne
$iCol Numéro de colonne
$bToggleSense [optionnel] Bascule le sens du tri
    True - Bascule le sens du tri après le tri (par défaut)
    False - Le sens du tri reste inchangé après le tri

Valeur de retour

Aucune.

Remarques

C'est une fonction de tri basique, pour un tri plus performant, utilisez GUICtrlRegisterListViewSort().

Basculer le sens du tri est un comportement normal lorsque le tri est initié par un clic sur l'en-tête de colonne.
L'utilisateur peut empêcher cette bascule en mettant $bToggleSense à False lors d'un appel de la fonction d'un autre endroit.

Si la fonction est appelée à partir de plusieurs fonctions et si le sens du tri doit être basculé, il est important que $vSortSense soit de portée Global.
Sinon, le sens sera réinitialisé à chaque fois que $vSortSense sera créé et le basculement sera inefficace.

Exemple

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

Global $g_idListView, $g_bSortSense = False ; Définit un tri croissant

Example()

Func Example()
    GUICreate("SimpleSort", 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")
    
    Local $iMsg
    Do
        $iMsg = GUIGetMsg() 
        Switch $iMsg
            Case $idButton_Add
                Local $sData = Chr(Random(65, 90, 1))
                GUICtrlCreateListViewItem($sData, $g_idListView)
                _GUICtrlListView_SimpleSort($g_idListView, $g_bSortSense, 0, False) ; Empêche la direction du tri de basculer la prochaine fois
            Case $idButton_Set
                $g_bSortSense = False ; Réinitialise l'ordre croissant pour la prochaine fois
        EndSwitch
    Until $iMsg = $GUI_EVENT_CLOSE

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 
                    ; Une colonne a été cliquée
                    ; Direction du tri pour le prochain tri, basculée par défaut
                    _GUICtrlListView_SimpleSort($hWndListView, $g_bSortSense, DllStructGetData($tNMHDR, "SubItem"))
            EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
EndFunc   ;==>_WM_NOTIFY