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é ! :P

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