[R] Déclaration Gui Ctrl par boucle

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Tyrael
Niveau 1
Niveau 1
Messages : 10
Enregistré le : mer. 01 août 2012 16:38
Status : Hors ligne

[R] Déclaration Gui Ctrl par boucle

#1

Message par Tyrael »

Bonjour,

Je souhaite créer des Label et des Input (ou autre) par l'intermédiaire d'une boucle.
Un truc du genre :

Code : Tout sélectionner

For $i = 1 To 5
    Global $LblJo & $i = GUICtrlCreateLabel("Joueur " & $i, 20, 50)
    Global $InJo & $i = GUICtrlCreateInput("Joueur " & $i, 70, 48, 100)
Next
 
Evidemment ce code ne fonctionne pas mais c'est cette idée que j'aimerai réaliser.
Je suis quasiment certain que cette demande a déjà été formulé mais j'ai chercher sur internet et je n'ai pas trouvé (j'ai du mal à trouver les bon mots clé je pense).

Merci d'avance
Modifié en dernier par Tyrael le sam. 31 août 2013 15:13, modifié 1 fois.
alex1205
Niveau 5
Niveau 5
Messages : 123
Enregistré le : dim. 07 mars 2010 13:59
Status : Hors ligne

Re: [..] Déclaration Gui Ctrl par boucle

#2

Message par alex1205 »

Bonjour,

Voilà un code fait à l'arrache :

Code : Tout sélectionner

;== MéTHODE BRUTE ==;
;Utilisation d'Assign et Eval
For $i = 1 To 5
    Assign("LblJo" & $i, GUICtrlCreateLabel("Joueur " & $i, 20, 50))
    Assign("InJo" & $i, GUICtrlCreateInput("Joueur " & $i, 70, 48, 100))
Next
; pour récuperer les valeurs
Eval("LblJo1") ; si tu veux récuperer $LblJo1

;== MéTHODE SIMPLE ==;
;Utilisation d'arrays
Global $LblJo[5], $InJo[5]
For $i = 1 To 5
    $LblJo[$i] = GUICtrlCreateLabel("Joueur " & $i, 20, 50)
    $InJo[$i] = GUICtrlCreateInput("Joueur " & $i, 70, 48, 100))
Next
;pour récuperer
$labeljoueurnumero1 = $LblJo[1]
Deux possibiltés : Eval&Assign ou les arrays.

Alex1205
Le "je ne sais pas" et "j'y arrive pas" n'existe dans mon vocabulaire. Toutes Questions ont une réponse, cherchez et vous la trouverai. Utilisez Recherche du forum et vous verrez. Si [blink]Aucune[/blink] question ne tient à votre problème, créez un sujet.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Déclaration Gui Ctrl par boucle

#3

Message par mikell »

ça ne fonctionne pas à cause du "Global $LblJo & $i"
Il faut que les variables soient déclarées avant, dans une array par exemple

Code : Tout sélectionner

Global $labels[5]
GuiCreate("test")
For $i = 0 To 4
    $labels[$i] = GUICtrlCreateLabel("Joueur " & $i+1, $i*50+60, 50)
Next
GuiSetState()

While 1
 $msg = GuiGetMsg()
 If $msg = -3 Then Exit
 For $i = 0 To 4
    If $msg = $labels[$i] Then Msgbox(0,"", GuiCtrlRead($labels[$i]))
 Next
Wend
Tu peux aussi utiliser ce genre de code (trouvé sur le forum)
► Afficher le texte
Je déconseille l'utilisation de Assign et Eval (délicat et acrobatique) : http://www.autoitscript.fr/forum/viewto ... =11&t=6665

EDIT
J'avais pas vu le code d'alex
Bon ben mon 2ème code montre une méthode n°3
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Tyrael
Niveau 1
Niveau 1
Messages : 10
Enregistré le : mer. 01 août 2012 16:38
Status : Hors ligne

Re: [..] Déclaration Gui Ctrl par boucle

#4

Message par Tyrael »

Ok merci à vous deux.
C'était Eval & Assign que j'avais déjà utilisé (mais impossible de me souvenir des fonction et de remettre la main sur mon code xD)

J'avais pas pensé à un Array je pense que je vais utiliser cette méthode merci de votre aide (et de la rapidité :))
Répondre