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