Bonjour,
J'utilise une méthode pour trier les listes en utilisant un array (tableau)
Donc au lieu de faire un _GUICtrlListView_SortItems sur la liste j'ai un array qui est la copie de la liste et que je trie avec la commande _ArraySort
Une fois l'array trié je supprime tout le contenu de la liste avec un _GUICtrlListView_DeleteAllItems et je copie l'array dans la liste avec la commande _GUICtrlListView_AddArray
Cette méthode donne des tris plus rapides qu'avec un _GUICtrlListView_SortItems quand il y a beaucoup de lignes dans la liste.
Mais avec cette méthode la petite flèche qui apparaît dans l'entête de liste avec la commande _GUICtrlListView_SortItems et qui indique le sens du tri n'apparaît pas.
Auriez vous une méthode pour afficher cette flèche ?
Merci
Eric
Voici un extrait de ce code :
► Afficher le texte
Code : Tout sélectionner
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GuiListView.au3>
$compteur = 1
; Liste des fichiers
$gui = GUICreate("liste", 750, 630, 20, 20, $WS_THICKFRAME + $WS_MAXIMIZEBOX + $WS_MINIMIZEBOX)
$listview = GUICtrlCreateListView("Fichier|Format|Taille", 10, 10, 730, 450, $LVS_SINGLESEL, $LVS_EX_REGIONAL + $LVS_EX_FULLROWSELECT + $LVS_EX_GRIDLINES)
$item1 = GUICtrlCreateListViewItem("fichier1|txt|100 ko", $listview)
$item2 = GUICtrlCreateListViewItem("fichier2|txt|200 ko", $listview)
$item3 = GUICtrlCreateListViewItem("fichier3|txt|300 ko", $listview)
; création de l'array
Global $array[3][3] ; déclaration de l'array
$array[0][0] = "fichier1"
$array[0][1] = "txt"
$array[0][2] = "100 ko"
$array[1][0] = "fichier2"
$array[1][1] = "txt"
$array[1][2] = "200 ko"
$array[2][0] = "fichier3"
$array[2][1] = "txt"
$array[2][2] = "300 ko"
GUISetState(@SW_SHOW, $gui)
While 1
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
Exit
Case $msg = $listview
; reclasser les colonnes
Call("trierliste")
EndSelect
WEnd
Func trierliste()
$numcolonne = GUICtrlGetState($listview) ;obtenir le numéro de la colonne cliquée
If $compteur = 1 Then ;trier ascendant
_ArraySort($array, 0, 0, 0, $numcolonne)
$compteur = $compteur - 1
Else
_ArraySort($array, 1, 0, 0, $numcolonne);trier descendant
$compteur = $compteur + 1
EndIf
_GUICtrlListView_DeleteAllItems($listview) ; effacer toute la liste
_GUICtrlListView_AddArray($listview, $array) ; copier l'array dans la liste
EndFunc ;==>trierliste