Assign() Eval()

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
JoeBar
Niveau 2
Niveau 2
Messages : 23
Enregistré le : sam. 26 oct. 2019 10:20
Status : Hors ligne

Assign() Eval()

#1

Message par JoeBar »

Bonjour, ne me demandez pas pourquoi mais je suis parti sur Assign pour créer des TabItem et peupler ceux-ci avec du contenu (boutons, texte, image...).

Tout fonctionne en étant créé à travers des boucles de ce genre :

Code : Tout sélectionner

For $i = 0 To UBound($aCSV) - 1 Step 4
Assign("idtab" & $i, GUICtrlCreateTabItem($aCSV[$i]))
GUISwitch($DltGui, Eval("idtab" & $i))
GUICtrlCreateLabel($aCSV[$i], 170, 95, 393, 44, $SS_CENTER, -1)
GUICtrlSetFont(-1, 28, 400, 0, "Segoe UI Symbol")
GUICtrlSetColor(-1, "0x000080"))
			
Assign("btnopen" & $i, GUICtrlCreateButton("Ouvrir le fichier", 445, 231, 133, 37, -1, -1))
GUICtrlSetFont(-1, 12, 400, 0, "MS Reference Sans Serif")
GUICtrlSetTip(-1, "Ouvre le fichier téléchargé")
GUICtrlSetOnEvent(-1, _Launch)
GUICtrlSetState(-1, $GUI_DISABLE)
Donc, logiquement, les ID des boutons "Ouvrir le fichier", doivent être stockés dans "btnopen0", "btnopen4", "btnopen8", etc...

Tout fonctionne très bien, le seul hic, c'est que plus loin dans une fonction, j'essaye de dégriser le bouton "btnopen" & $i par la commande :

Code : Tout sélectionner

GUICtrlSetState(Eval("btnopen" & GUICtrlRead($tab) * 4), $GUI_ENABLE)
En gros, j'essaye de retrouver l'ID du bouton en lisant l'index du Tab sélectionné, mais j'arrive pas à trouver le bon ID du bouton malgré pas mal d'essais.

Vous pouvez m'aider ?
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: Assign() Eval()

#2

Message par mikell »

Dans ce genre de situation une bonne idée pourrait être de faire un debug en décomposant l'instruction (en rajoutant des tas de Consolewrite )

; GUICtrlSetState(Eval("btnopen" & GUICtrlRead($tab) * 4), $GUI_ENABLE)

$n = GUICtrlRead($tab) * 4
$s = "btnopen" & $n
$id = Eval($s)
GUICtrlSetState($id, $GUI_ENABLE)
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
JoeBar
Niveau 2
Niveau 2
Messages : 23
Enregistré le : sam. 26 oct. 2019 10:20
Status : Hors ligne

Re: Assign() Eval()

#3

Message par JoeBar »

Merci, en fait, j'avais déjà testé. J'arrive pas à retrouver la variable de ce bouton.

Le $id = Eval($s) ne renvoie rien, alors que toutes les autres variables sont correctes ...
JoeBar
Niveau 2
Niveau 2
Messages : 23
Enregistré le : sam. 26 oct. 2019 10:20
Status : Hors ligne

Re: Assign() Eval()  

#4

Message par JoeBar »

Ok j'ai résolu le soucis en y ayant passé la soirée, c'est très très bête, il suffit de déclarer le Assign avec le flag 2 en dernier paramètre pour déclarer la variable globalement.

Je pouvais essayer d'afficher la variable pendant des heures, elle n’existait plus hors boucle :twisted:

J'aurais appris quelque chose :lol:
Répondre