Page 1 sur 1
[R] GUICtrlSetData et tri
Posté : jeu. 03 mars 2011 08:39
par Filo
Bonjour,
Je débute avec autoit.
Dans mon premier script, je récupère dans un fichier texte des nombres que je passe dans une liste déroulante avec GUICtrlSetData.
Comment classer ces nombres en ordre croissant ?
Merci,
Filo
Re: [..] GUICtrlSetData et tri
Posté : jeu. 03 mars 2011 08:46
par Tlem
Je pense que le plus simple est de passer vous valeurs dans un tableau, puis de trier ce dernier avec la commande
_ArraySort.
Après, une simple boucle de lecture vous permettra de tout remettre dans votre Combo.

Re: [..] GUICtrlSetData et tri
Posté : jeu. 03 mars 2011 11:27
par zeshrek
ou alors on utilise l'option de tri dans le style de la combo :
Code : Tout sélectionner
#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <ComboConstants.au3>
$StyleCombo_Default = BitOR($CBS_DROPDOWN, $CBS_AUTOHSCROLL, $WS_VSCROLL)
$StyleCombo_AvecTri = BitOR($StyleCombo_Default,[color=#FF0000] $CBS_SORT[/color])
$Form1 = GUICreate("Form1", 633, 454, 192, 114)
$Combo1 = GUICtrlCreateCombo("Combo1", 192, 64, 145, 25, $StyleCombo_AvecTri) ; on crée le combo avec le style par defaut + tri
GUICtrlSetData(-1, "2|1|3|9|6|4|8|7|5") ; on injecte les données dans le désordre le plus total
GUISetState(@SW_SHOW) ; miracle ca sera trié :)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Re: [..] GUICtrlSetData et tri
Posté : jeu. 03 mars 2011 12:14
par Filo
Merci beaucoup pour vos réponses.
J'essaie le tableau dans un premier temps, ce qui me servira pour beaucoup d'autres choses..
Voici la déclaration du tableau, qui semble fonctionner.
J'ai un peu de difficulté avec les arguments de la fonction _arraySort par contre.
Code : Tout sélectionner
$numStations = FileReadLine($file1)
If @error = -1 Then ExitLoop
Dim $tab
_ArrayDisplay($tab, $numStations)
_ArraySort ($tab)
For $i = 0 To UBound($tab -1)
GUICtrlSetData($stations, $i)
Next
Re: [..] GUICtrlSetData et tri
Posté : jeu. 03 mars 2011 23:37
par Tlem
Ahh, oui, $CBS_SORT, je l'avais oublié celui-là !!!
+1
Re: [..] GUICtrlSetData et tri
Posté : ven. 04 mars 2011 09:54
par zeshrek
hé hé hé !

Re: [R] GUICtrlSetData et tri
Posté : ven. 04 mars 2011 17:13
par Filo
Merci pour votre aide, c'est ok.
Code : Tout sélectionner
;lecture ligne à ligne du fichier et intégration dans le menu déroulant
While 1
$numStations = FileReadLine($file1)
If @error = -1 Then ExitLoop
Dim $tab
_ArrayDisplay($tab, $numStations)
_ArraySort($numStations)
For $i = 0 To UBound($tab -1)
GUICtrlSetData($stations, $i)
GUICtrlSetData($stations, $numStations)
Next
;ajout d'un dernier item (defaut)
GUICtrlSetData($stations, "Choisir la station")
Wend