[R] GUICtrlSetData et tri

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Filo
Niveau 1
Niveau 1
Messages : 3
Enregistré le : mer. 02 mars 2011 12:09
Status : Hors ligne

[R] GUICtrlSetData et tri

#1

Message 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
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] GUICtrlSetData et tri

#2

Message 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. ;)
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
zeshrek
Niveau 10
Niveau 10
Messages : 984
Enregistré le : mer. 17 nov. 2010 09:31
Localisation : Sur ma chaise
Status : Hors ligne

Re: [..] GUICtrlSetData et tri

#3

Message 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
Si vis pacem para bellum
Filo
Niveau 1
Niveau 1
Messages : 3
Enregistré le : mer. 02 mars 2011 12:09
Status : Hors ligne

Re: [..] GUICtrlSetData et tri

#4

Message 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
Modifié en dernier par TommyDDR le jeu. 03 mars 2011 12:14, modifié 1 fois.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] GUICtrlSetData et tri

#5

Message par Tlem »

Ahh, oui, $CBS_SORT, je l'avais oublié celui-là !!!
+1
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
zeshrek
Niveau 10
Niveau 10
Messages : 984
Enregistré le : mer. 17 nov. 2010 09:31
Localisation : Sur ma chaise
Status : Hors ligne

Re: [..] GUICtrlSetData et tri

#6

Message par zeshrek »

hé hé hé ! :P
Si vis pacem para bellum
Filo
Niveau 1
Niveau 1
Messages : 3
Enregistré le : mer. 02 mars 2011 12:09
Status : Hors ligne

Re: [R] GUICtrlSetData et tri

#7

Message 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
Répondre