Page 1 sur 1

Tri d'une ListView au clic

Posté : dim. 30 août 2020 14:28
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

Re: Tri d'une ListView au clic  

Posté : dim. 30 août 2020 17:14
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

Re: Tri d'une ListView au clic

Posté : dim. 30 août 2020 21:45
par Cengokill
Oui, merci, mais comment je fais pour le mode évènement ?
Opt("GUIOnEventMode", 1)

Re: Tri d'une ListView au clic

Posté : lun. 31 août 2020 12:20
par mikell
Franchement................... Image

GUICtrlSetOnEvent($idListview, "sort")
(...)
Func sort()
   $col = GUICtrlGetState($idListview)
   _GUICtrlListView_SimpleSort($hListview, $a_sort , $col)
EndFunc

Re: Tri d'une ListView au clic

Posté : mar. 01 sept. 2020 09:12
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...

Re: Tri d'une ListView au clic

Posté : mar. 01 sept. 2020 13:57
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: