Trie un contrôle ListView (limité)
#include <GuiListView.au3>
_GUICtrlListView_SimpleSort ( $hWnd, ByRef $vSortSense, $iCol [, $bToggleSense = True] )
$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 |
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.
#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