Page 1 sur 1
[R] Déclaration Gui Ctrl par boucle
Posté : sam. 31 août 2013 14:07
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
Re: [..] Déclaration Gui Ctrl par boucle
Posté : sam. 31 août 2013 14:25
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
Re: [..] Déclaration Gui Ctrl par boucle
Posté : sam. 31 août 2013 14:45
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
Code : Tout sélectionner
#include <GUIConstantsEx.au3>
Opt("GUIOnEventMode", 1)
$Gui = GUICreate("Random", 530, 310)
GUISetOnEvent($GUI_EVENT_CLOSE, "quit")
RemplirLabels()
GUISetState()
While 1
Sleep(10)
WEnd
Func RemplirLabels()
Local $x, $y, $Labels = 300, $Palier = 20
For $i = 0 To $Labels
$x = 5 + Floor($i/$Palier)*35
$y = 5 + Mod($i, $Palier)*15
GUICtrlCreateLabel(Random(0, 999, 1) & @CRLF & $i, $x, $y, 30, 13, 1)
GUICtrlSetBkColor(-1, 0xFFAAAA)
GUICtrlSetOnEvent(-1, "LabelClic")
Next
EndFunc
Func LabelClic()
Local $text = StringSplit(GUICtrlRead(@GUI_CtrlId), @CRLF, 1)
ToolTip("Label numero " & $text[2]+1 & " : " & $text[1])
EndFunc
Func quit()
Exit
EndFunc
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
Re: [..] Déclaration Gui Ctrl par boucle
Posté : sam. 31 août 2013 15:13
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é

)