Tri d'une ListView au clic

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Cengokill
Niveau 2
Niveau 2
Messages : 15
Enregistré le : ven. 07 août 2020 18:47
Status : Hors ligne

Tri d'une ListView au clic

#1

Message par Cengokill »

Bonjour à tous, j'aimerais pouvoir trier une ListView en cliquant sur la colonne à trier. J'ai fais des recherches, et visiblement la fonction _GUICtrlListView_SimpleSort() ressort souvent, mais cette fonction semble trier une ListView à sa création (je l'ai testée et ça fonctionne).

J'ai découvert la fonction GUICtrlRegisterListViewSort(), mais très sincèrement en voyant les exemples, je n'ai pas compris comment l'utiliser, et ce qui la différencie de _GUICtrlListView_SimpleSort().

Sauriez-vous comment m'aider ?
Merci d'avance !
Opt("GUIOnEventMode", 1)

$Form1 = GUICreate("ListView tri", 700, 627, 500, 450)
GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")

$idListview = GUICtrlCreateListView("colonne 1|colonne2|colonne 3", 50, 75, 601, 510)
GUICtrlCreateListViewItem("a|c|b", $idListview)
GUICtrlCreateListViewItem("b|a|d", $idListview)
GUICtrlCreateListViewItem("c|b|c", $idListview)
GUICtrlCreateListViewItem("d|d|a", $idListview)

GUISetState(@SW_SHOW)
While 1
   Sleep(100)
WEnd

Func Form1Close()
   Exit
EndFunc
_____ Cengokill ______
Avatar du membre
mikell
Modérateur
Modérateur
Messages : 6022
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: Tri d'une ListView au clic  

#2

Message par mikell »

On peut utiliser _GUICtrlListView_SimpleSort() en cours de script, c'est pas bien compliqué

#include <GuiListView.au3>

$Form1 = GUICreate("ListView tri", 700, 627, 500, 450)
$idListview = GUICtrlCreateListView("colonne 1|colonne2|colonne 3", 50, 75, 601, 510)
GUICtrlCreateListViewItem("a|c|b", $idListview)
GUICtrlCreateListViewItem("b|a|d", $idListview)
GUICtrlCreateListViewItem("c|b|c", $idListview)
GUICtrlCreateListViewItem("d|d|a", $idListview)
GUISetState()

Global $a_sort = [False, False, False]
$hListview = GUICtrlGetHandle($idListview)

While 1
   $msg = GuiGetMsg()
   Switch $msg
      Case -3;$GUI_EVENT_CLOSE
         Exit
      Case $idListview
         $col = GUICtrlGetState($idListview)
         _GUICtrlListView_SimpleSort($hListview, $a_sort , $col)
   EndSwitch
WEnd
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Cengokill
Niveau 2
Niveau 2
Messages : 15
Enregistré le : ven. 07 août 2020 18:47
Status : Hors ligne

Re: Tri d'une ListView au clic

#3

Message par Cengokill »

Oui, merci, mais comment je fais pour le mode évènement ?
Opt("GUIOnEventMode", 1)
_____ Cengokill ______
Avatar du membre
mikell
Modérateur
Modérateur
Messages : 6022
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: Tri d'une ListView au clic

#4

Message par mikell »

Franchement................... Image

GUICtrlSetOnEvent($idListview, "sort")
(...)
Func sort()
   $col = GUICtrlGetState($idListview)
   _GUICtrlListView_SimpleSort($hListview, $a_sort , $col)
EndFunc
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Cengokill
Niveau 2
Niveau 2
Messages : 15
Enregistré le : ven. 07 août 2020 18:47
Status : Hors ligne

Re: Tri d'une ListView au clic

#5

Message par Cengokill »

Merci. Oui bah désolé, je débute sur autoit, et je ne savais même pas que l'on pouvait faire
GUICtrlSetOnEvent($idListview, "sort"
Le principe de publier sur ce forum c'est d'apprendre ce que l'on ne sait pas...
_____ Cengokill ______
Avatar du membre
mikell
Modérateur
Modérateur
Messages : 6022
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: Tri d'une ListView au clic

#6

Message par mikell »

Certes. Mais comme dans ton code du post #1 tu utilisais GUISetOnEvent, je me suis dit que forcément tu avais lu la page correspondante dans l'aide, y compris bien sûr le script d'exemple de cette page qui mentionne 2 fois GUICtrlSetOnEvent et son usage :wink:
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Répondre