[R] Stocker une donnée pour chaque item d'un combo

Aide sur les Interfaces Graphique Utilisateurs (GUI).
Règles du forum
.
Répondre
CleM71
Niveau 2
Niveau 2
Messages : 24
Enregistré le : mer. 16 avr. 2008 08:58
Status : Hors ligne

[R] Stocker une donnée pour chaque item d'un combo

#1

Message par CleM71 »

Bonjour,

Au lancement de mon application, un combo se remplit de valeurs dont l'affichage est utile à la compréhension de l'utilsateur (le nom d'un fichier par exemple).

Mon traitement, lui, n'a que faire de ce nom de fichier, mais désire connaître son chemin absolu ...

Comment faire, avec un Combo box, pour afficher une donnée dans un item, et en stocker une différente de manière invisible ?

A l'époque où je développais en Visual Basic, la propriété "value" d'un item complétait généreusement la propriété "text" ou "caption".

Peut-on en faire de même en AutoIt ?

En vous remerciant.
Modifié en dernier par CleM71 le ven. 30 mai 2008 10:06, modifié 1 fois.
CleM71
Niveau 2
Niveau 2
Messages : 24
Enregistré le : mer. 16 avr. 2008 08:58
Status : Hors ligne

Re: [..] Stocker une donnée pour chaque item d'un combo

#2

Message par CleM71 »

Bonjour,

Pas de solution à me proposer ? :-(
Avatar du membre
Voodoo
Niveau 6
Niveau 6
Messages : 298
Enregistré le : ven. 20 juil. 2007 20:45
Status : Hors ligne

Re: [..] Stocker une donnée pour chaque item d'un combo

#3

Message par Voodoo »

La méthode simple qui me vient à l'esprit est de faire un tableau à 2 dimensions. Le nom dans la premiére colonne et le chemin dans l'autre.

Quand tu as besoins du chemin, tu récupères le nom dans le combobox et tu le cherches dans ton tableau pour avoir l'indice. Tu auras le chemin.

Il y a peut étre moyen de faire mieux mais c'est une méthode :D
CleM71
Niveau 2
Niveau 2
Messages : 24
Enregistré le : mer. 16 avr. 2008 08:58
Status : Hors ligne

Re: [..] Stocker une donnée pour chaque item d'un combo

#4

Message par CleM71 »

Merci pour ta réponse.

C'est exactement ce sur quoi je me suis dirigé.

Pour récupérer l'index de l'élément sélectionné, il faut utiliser les librairies UDF des Combobox. J'ai donc migré vers ce composant, avec notamment le _GUICtrlComboboxEx_Create().

La méthode AddString est censée ajouter un élément au Combo box, et ce n'est pas le cas chez moi, du moins je ne le vois pas ! Le combo reste désespérément vide.

J'ai essayé même de copier / coller les scripts d'exemple fournis avec AutoIt. Si je l'exécute dans un nouveau programme, avec une GUI dédiée à ce test, ça marche. Dès que j'implémente la création d'items dans ma GUI, je ne vois rien dans le combo.

Inclusion du composant :

Code : Tout sélectionner

#Include <GuiComboBoxEx.au3>
 
Création de la GUI :

Code : Tout sélectionner

$Win = GUICreate("ALIAS 1.0", 322, 526, 326, 197)
 
Création du combo :

Code : Tout sélectionner

$LstMSI = _GUICtrlComboBoxEx_Create($Win, "", 7, 112, 305, 25)
 
Pour stocker dans un tableau mon information, j'utilise une variable $i incrémentée à chaque ajout d'un item dans le combo.
Voici ma fonction récursive, qui doit ajouter un item dans le combo par fichier MSI trouvé à partir du répertoire avec lequel elle est lancée à l'origine :

Code : Tout sélectionner

Func ScanFolderForMSI($SourceFolder)
    Local $Search
    Local $File
    Local $FileAttributes
    Local $FullFilePath
        
    $Search = FileFindFirstFile($SourceFolder & "\*.*")
    While 1
        If $Search = -1 Then
            ExitLoop
        EndIf
        $File = FileFindNextFile($Search)
        If @error Then ExitLoop
        $FullFilePath = $SourceFolder & "\" & $File
        $FileAttributes = FileGetAttrib($FullFilePath)
        If StringInStr(StringRight ($File, 4), ".msi") Then
            _GUICtrlComboBoxEx_AddString($LstMSI, $FullFilePath)
            $i = $i  + 1
            $TabMSI[$i] = $FullFilePath
        EndIf
        If StringInStr($FileAttributes,"D") Then
            ScanFolderForMSI($FullFilePath)
        EndIf
    WEnd
    FileClose($Search)
EndFunc
 

Plus incroyable, si je fais

Code : Tout sélectionner

MsgBox(0, "", _GUICtrlComboBoxEx_AddString($LstMSI, $FullFilePath))
 
ça me renvoie bien l'index de l'item qui vient d'être ajouté !

Donc voilà, si vous avez des idées, je suis preneur :-)

Merciii
CleM71
Niveau 2
Niveau 2
Messages : 24
Enregistré le : mer. 16 avr. 2008 08:58
Status : Hors ligne

Re: [..] Stocker une donnée pour chaque item d'un combo

#5

Message par CleM71 »

Résolu

La hauteur de mon combo (25) était insuffisante ...
Répondre