Page 1 sur 1

Assign() Eval()

Posté : dim. 24 nov. 2019 11:39
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 ?

Re: Assign() Eval()

Posté : dim. 24 nov. 2019 18:03
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)

Re: Assign() Eval()

Posté : dim. 24 nov. 2019 18:19
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 ...

Re: Assign() Eval()  

Posté : dim. 24 nov. 2019 23:03
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: