Page 1 sur 1
[R] Tri listview plusieurs colonnes
Posté : sam. 07 mars 2015 22:14
par TiOm4cK
bonsoir a tout le monde
me revoila a programmer sous autoit
mais je seche pour un algorithme de tri
j'aimerai pouvoir trier les differentes team dans la listview en fonction de celle qui a le plus grand nombres de point au lancement du script
je m'explique j'ai un fichier data.ini sous cette forme
► Afficher le texte
Code : Tout sélectionner
[team_id]
0=teamA
1=teamB
2=teamC
3=teamD
4=teamE
5=teamF
6=teamG
7=teamH
8=teamI
9=teamJ
10=teamK
11=teamL
12=teamM
13=teamN
14=teamO
15=teamP
16=teamQ
17=teamR
18=teamS
19=teamT
20=teamU
[nb_point]
0=14
1=0
2=47
3=52
4=12
5=25
6=24
7=27
8=29
9=37
10=54
11=51
12=58
13=13
14=78
15=13
16=14
17=10
18=89
19=56
20=42
et j'aurai aimer pouvoir remplir ma listview mais dans l'ordre decroissant en focntion du nombre de point de chaque team
et en plus de ca j'aurai aimer ne faire afficher que les 10 premiere team mais je vois pas trop comment faire
pour le moment j'ai ceci
► Afficher le texte
Code : Tout sélectionner
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 476, 320, 283, 136)
$Listview = GUICtrlCreateListView("position|team|points|", 12, 6, 451, 303)
Global $data_ini = @ScriptDir & "\data.ini"
Local $aDat0 = IniReadSection($data_ini, "team_id")
Local $aDat2 = IniReadSection($data_ini, "nb_point")
For $i = 1 To $aDat0[0][0]
GUICtrlCreateListViewItem($i & "|" & $aDat0[$i][1] & "|" & $aDat2[$i][1] & "|", $Listview)
Next
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
alors une petite idée ?
Re: Tri listview plusieurs colonnes [..]
Posté : sam. 07 mars 2015 22:49
par mikell
Voui
► Afficher le texte
Code : Tout sélectionner
#include <GUIConstantsEx.au3>
#Include <GuiListView.au3>
#include <WindowsConstants.au3>
$Form1 = GUICreate("Form1", 476, 320, 283, 136)
$Listview = GUICtrlCreateListView("position|team|points|", 12, 6, 451, 303)
Global $data_ini = @ScriptDir & "\data.ini"
Local $aDat0 = IniReadSection($data_ini, "team_id")
Local $aDat2 = IniReadSection($data_ini, "nb_point")
For $i = 1 To $aDat0[0][0]
GUICtrlCreateListViewItem(" |" & $aDat0[$i][1] & "|" & $aDat2[$i][1] & "|", $Listview)
Next
_GUICtrlListView_SimpleSort($listview, True, 2)
For $i = _GUICtrlListView_GetItemCount($listview)-1 to 10 step -1
_GUICtrlListView_DeleteItem($listview, $i)
Next
For $i = 0 to 9
_GUICtrlListView_SetItemText($listview, $i, $i+1)
Next
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Re: [..] Tri listview plusieurs colonnes
Posté : sam. 07 mars 2015 22:53
par TiOm4cK
merci mikell
mais je ne comprend pas dutout cette erreur
j'ai changer le nom des variable $listview en $Listview mais sinon je vois pas quoi changer d'autre
:S
Re: [..] Tri listview plusieurs colonnes
Posté : sam. 07 mars 2015 23:04
par mikell
Bizarre
Peut-être ce paramètre passé en ByRef dans l'udf (complètement inutile d'ailleurs)
Essaie ça
Code : Tout sélectionner
$sens = "True"
_GUICtrlListView_SimpleSort($listview, $sens, 2)
Re: [..] Tri listview plusieurs colonnes
Posté : sam. 07 mars 2015 23:08
par TiOm4cK
parfait ca marche
toujours aussi rapide mikell
enfin j'aurai peut etre oublier de te preciser un detail la colonne position ne doit pas bouger
:S
Re: [..] Tri listview plusieurs colonnes
Posté : sam. 07 mars 2015 23:19
par mikell
Ah bah je pensais que c'était pour le classement
Bon bin faut revenir au code de départ alors
► Afficher le texte
Code : Tout sélectionner
#include <GUIConstantsEx.au3>
#Include <GuiListView.au3>
#include <WindowsConstants.au3>
$Form1 = GUICreate("Form1", 476, 320, 283, 136)
$Listview = GUICtrlCreateListView("position|team|points|", 12, 6, 451, 303)
Global $data_ini = @ScriptDir & "\data.ini"
Local $aDat0 = IniReadSection($data_ini, "team_id")
Local $aDat2 = IniReadSection($data_ini, "nb_point")
For $i = 1 To $aDat0[0][0]
GUICtrlCreateListViewItem($i & "|" & $aDat0[$i][1] & "|" & $aDat2[$i][1] & "|", $Listview)
Next
$sens = True
_GUICtrlListView_SimpleSort($listview, $sens, 2)
For $i = _GUICtrlListView_GetItemCount($listview)-1 to 10 step -1
_GUICtrlListView_DeleteItem($listview, $i)
Next
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Edit
On s'est peut-être mal compris
Mon code précédent classe de 1 à 10 dans la 1ère colonne
Re: [..] Tri listview plusieurs colonnes
Posté : sam. 07 mars 2015 23:19
par TiOm4cK
heu tu viens de me troll la non ?
il n'y a pas de modification
ducoup je pensais faire une boucle a la fin qui rename tous les item de la premiere colonne en numero de 1 a 10
tu ferais comment toi ?
Re: [..] Tri listview plusieurs colonnes
Posté : sam. 07 mars 2015 23:21
par mikell
ça va trop vite
Regarde mieux mon 1er code
Re: [..] Tri listview plusieurs colonnes
Posté : sam. 07 mars 2015 23:25
par TiOm4cK
ahahah bon bah ducoup j'ai ma reponse
merci beaucoup mikell je vais pouvoir continuer j'etais bloqué la dessus bonne soirée
Re: [..] Tri listview plusieurs colonnes
Posté : dim. 08 mars 2015 07:27
par jguinch
Si le problème est résolu, merci de passe le titre du premier message en [R]
Mikell a écrit :
Peut-être ce paramètre passé en ByRef dans l'udf (complètement inutile d'ailleurs)
Je vois pas non plus...
Re: [..] Tri listview plusieurs colonnes
Posté : dim. 08 mars 2015 11:58
par mikell
Oui je n'arrive pas à voir l'intérêt de mettre ce paramètre en ByRef, ça crée des contraintes et la fonction marcherait très bien sans - d'ailleurs je n'ai pas vu le souci de suite parce que chez moi le code initial fonctionnait sans erreur
Après tout si le sens du tri doit être d'abord déclaré en global pour des raisons de toggling en cours de script rien n'empêche de le faire, bien que là encore cette obligation de déclaration me semble surtout être due à l'utilisation de ByRef
Re: [..] Tri listview plusieurs colonnes
Posté : dim. 08 mars 2015 16:37
par jguinch
Je viens de jeter un œil à l'UDF _GUICtrlListView_SimpleSort pour essayer de comprendre l'intérêt du ByRef.
La seule explication que je trouve et la possibilité de connaître le sens de tri en vérifiant la valeur de $vSortSense en sortie de fonction...
Re: [..] Tri listview plusieurs colonnes
Posté : dim. 08 mars 2015 17:38
par mikell
Bah si, la déclaration en global permet de "mémoriser" dans le script la valeur du paramètre $vSortSense si on veut alterner automatiquement le sens de tri en cliquant sur l'en-tête de colonne sans avoir à mentionner "$vSortSense = not $vSortSense"
L'intérêt de la chose me parait faible par rapport à la contrainte qu'impose un ByRef mais bon ...
Re: [..] Tri listview plusieurs colonnes
Posté : dim. 15 mars 2015 22:48
par TiOm4cK
oulah desole de ne pas m'etre manifesté plus tot et je passe en resolu des maintenant
mais je risque de deposer un nouveau post j'ai un soucis avec la voix google qui ne veut pas boucler bref je ferais un post pour ca merci pour ce sujet maintenant resolu :p