Page 1 sur 1

[R] Lecture et utilisation d'une liste

Posté : mar. 27 juil. 2010 14:17
par mafooley
Bonjour à tous,

J'espère que la présentation du message sera correcte...
ça fait un moment que je ne m'étais pas replongé dans cet "arrachage" de cheveux qu'est la programmation.

Voilà malgé mes recherche sur le forum, je n'ai pas trouvé, ou du moins pas clairement, de solution qui m'ont permit d'avancer.
En fait, j'essaye simplement de récupérer des informations contenues dans un fichier ini via IniReadSection et de les faire apparaitre dans une liste sur une GUI.
Cette première étape fonctionne. Ma liste se remplie correctement avec les données du fichier ini.
Mon soucis est que je n'arrive pas à associer les deux colonnes comprises dans la section de mon fichier ini; dans mons cas, la couleur avec la pierre:
► Afficher le textele fichier ini
Mon code est le suivant:
► Afficher le textele code
Voilà, j'aimerai que ma msgbox m'affiche les informations du fichier ini (bien-sûr, ces informations seront utilisés autrement, mais là, c'est juste pour l'exemple)

L'idéale serait de pouvoir même selectionner une ou plusieurs pierre dans la liste et que la msgbox affiche une ligne par réponse...

Merci d'avance pour votre aide.

Maf

Re: [..] Lecture et utilisation d'une liste

Posté : mar. 27 juil. 2010 14:44
par jbnh
Bonjour,

Pour votre premier problème, afficher la couleur, il est normal que votre script ne marche pas. En effet, jamais votre couleur n'est rentrée dans la GUI, uniquement les pierres donc un Guictrlread ne pourra jamais retourner la couleur. Par contre, une fois que vous avez la pierre vous devez retourner dans votre fichier ini et chopper la couleur associée à la pierre avec IniRead.

Pour la multisélection, je ne sais trop.

Re: [..] Lecture et utilisation d'une liste

Posté : mar. 27 juil. 2010 15:16
par mafooley
Et oui, suis-je bete...

j'ai remplacé :

Code : Tout sélectionner

$couleur = GUICtrlRead($info[$pierre][1])
 
par:

Code : Tout sélectionner

$couleur = IniRead ("Test.ini", "COULEUR", $pierre, " ")
 
et ça fonctionne. Il me reste tout de même le sujet de la selection multiple et là, je sèche...

Re: [..] Lecture et utilisation d'une liste

Posté : mer. 28 juil. 2010 10:02
par Jerome
Coucou,

Pour la multi sélection, il vous suffit de remplacer ce bout de code :

Code : Tout sélectionner

$LST01 = GUICtrlCreateList("", 40, 16, 161, 253)
par celui - ci

Code : Tout sélectionner

$LST01 = GUICtrlCreateList("", 40, 16, 161, 253, $LBS_EXTENDEDSEL)
Après, à vous d'adapter la msgbox en conséquence pour qu'elle affiche ce qu'il vous faut.

Edit : Je m'embêtait un peu, voici quelque chose qui je pense est ce que vous voulez

Code : Tout sélectionner

#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <Process.au3>

;----------VARIABLES------------------------------------------------

Global $info, $sShowItems, $aShowItems
Global $LST01

;-------------------------------------------------------------------

Opt("GUIOnEventMode", 1)

If Not FileExists("sylnet.ini") Then
    MsgBox(48, "INI ?", "La bibliothèque de contact n'a pas été trouvée.")
    Exit
EndIf

$info = IniReadSection("Test.ini", "COULEUR")
If @error Then
    MsgBox(16, "paramètre incorrect", "Le fichier INI ne contient pas de section [COULEUR].")
    Exit
EndIf


;----------GUI------------------------------------------------------

$Test = GUICreate("Test", 245, 361, 198, 136)
    GUISetOnEvent($GUI_EVENT_CLOSE, "annuler") ;Fermeture avec la p'tite croix
$LST01 = GUICtrlCreateList("", 40, 16, 161, 253, $LBS_EXTENDEDSEL)
    For $i = 1 To $info[0][0]
       GUICtrlSetData($LST01, $info[$i][0])
    Next
$Button1 = GUICtrlCreateButton("OK", 40, 304, 161, 33, $WS_GROUP)
    GUICtrlSetOnEvent($Button1, "afficher")
GUISetState(@SW_SHOW)


;-------------------------------------------------------------------

While 1
    $msg = GUIGetMsg()
    If $msg = $GUI_EVENT_CLOSE Then ExitLoop
Wend

;----------FONCTIONS------------------------------------------------

Func Annuler()
    Exit
EndFunc

;-------------------------------------------------------------------

Func afficher()
    $sShowItems = ""
    $aShowItems = _GUICtrlListBox_GetSelItemsText($LST01)
    For $i = 1 To $aShowItems[0]
        $couleur = IniRead ("Test.ini", "COULEUR", $aShowItems[$i], " ")
        $sShowItems &= "La couleur de " & $aShowItems[$i] & " est " & $couleur & "." & @LF
    Next
    MsgBox(0,"Résultat", $sShowItems)
EndFunc

;-------------------------------------------------------------------


Jérôme.

Re: [..] Lecture et utilisation d'une liste

Posté : lun. 16 août 2010 10:56
par mafooley
Impéccable, merci beaucoup Jérôme.

Maf