Page 1 sur 1

[R] Variable dans GUICtrlSetBkColor

Posté : lun. 16 mars 2015 22:47
par kwabara
Bonsoir,

bon je commence tout doucement avec Auto It et je me retrouve déjà face à un "petit" souci.

je vous explique ...

j'ai 2 boutons qui par défaut ont un fond rouge, je souhaiterai qu'après un passage dans une boucle la couleur change.

J'ai mis le nom de mes boutons dans un tableau avec une autre variable (qui servira pour autre chose par la suite) le tout séparé par un !

je sépare bien mes variables et utilise celle correspondant au nom de mon bouton avec :

Code : Tout sélectionner

GUICtrlSetBkColor($aArray1[0],$COLOR_GREEN)
Sauf que ca me retourne 0

Code : Tout sélectionner

$bt_hm = GUICtrlCreateButton("PAS LA", 160, 72, 305, 81)
GUICtrlSetBkColor(-1, 0xFF0000)
$bt_one = GUICtrlCreateButton("PAS LA", 160, 176, 305, 81)
GUICtrlSetBkColor(-1, 0xFF0000)

Dim $aArray [2] = ["$bt_hm!hm", "$bt_one!one"]

for $i = 0 to 1
       Local $sText = $aArray[$i]
       Local $aArray1 = _StringExplode($sText, "!", 0)
       GUICtrlSetBkColor($aArray1[0],$COLOR_GREEN)
    Next
 
Je dois faire mal quelque chose ou essayer de faire une chose impossible ...

Je sais pas si je suis super clair... :/

Merci d'avance pour votre aide 8)

@++

Re: [..] Variable dans GUICtrlSetBkColor

Posté : mar. 17 mars 2015 21:08
par ZDS
Bonjour,

$aArray1[0] contient une chaine de caractères "$bt_hm" (ou "$bt_one"), et non la variable $bt_hm (ou $bt_one). Il faut simplement appliquer un Eval, pour pouvoir utiliser GUICtrlSetBkColor sur l'élément graphique pointé par ta variable (et non la chaine de caractères) :

Code : Tout sélectionner

GUICtrlSetBkColor(Eval($aArray1[0]), $COLOR_GREEN)
A bientôt !

Re: [..] Variable dans GUICtrlSetBkColor

Posté : mer. 18 mars 2015 10:31
par kwabara
Bonjour et merci pour ta réponse !!!

je viens de tester avec Eval() mais ça ne fonctionne toujours pas.

En regardant un peu la fonction au niveau de la doc, il semblerait que ça renvoi une chaine de caractères vide quand il y a un souci. C'est le cas.

@++

Re: [..] Variable dans GUICtrlSetBkColor

Posté : mer. 18 mars 2015 11:25
par mikell
De toute façon Eval ici n'est qu'un cache-misère pour une construction de départ source d'emmerdements :wink:
Si tu veux associer des données dans une array, utilise une array 2D

Code : Tout sélectionner

;Dim $aArray [2] = ["$bt_hm!hm", "$bt_one!one"]

#include<Array.au3>
Local $bt_hm = 11, $bt_one = 12    ; pour le test

Dim $aArray[2][2] = [[$bt_hm, "hm"], [$bt_one, "one"]]
_ArrayDisplay($aArray)

Re: [..] Variable dans GUICtrlSetBkColor

Posté : mer. 18 mars 2015 12:44
par kwabara
mikell a écrit :De toute façon Eval ici n'est qu'un cache-misère pour une construction de départ source d'emmerdements :wink:
Si tu veux associer des données dans une array, utilise une array 2D

Code : Tout sélectionner

;Dim $aArray [2] = ["$bt_hm!hm", "$bt_one!one"]

#include<Array.au3>
Local $bt_hm = 11, $bt_one = 12 &nbsp; &nbsp;; pour le test

Dim $aArray[2][2] = [[$bt_hm, "hm"], [$bt_one, "one"]]
_ArrayDisplay($aArray)
Salut,

je viens de tester avec un tableau à 2 dimensions comme tu me le conseilles.

je récupère bien de part et d'autre les infos (mieux qu'un explode...)

je remplace les valeurs numériques par mes boutons (donc je dois normalement récupérer l'ID des ces derniers)

Code : Tout sélectionner

Local $bt_hm1 =$bt_hm, $bt_one1 =$bt_one    ; pour le test

Dim $aArray[2][2] = [[$bt_hm1, "hm"], [$bt_one1, "one"]]
 _ArrayDisplay($aArray)
GUICtrlSetBKColor($aArray[1][1])), $COLOR_GREEN)
 

Résultat => Incorrect number of parameters in function call

Alors que la fonction est : GUICtrlSetBkColor ( controlID, backgroundcolor )

Ou alors je m'y prends super mal et il existe un moyen plus simple de "boucler" sur plusieurs boutons

@++

Re: [..] Variable dans GUICtrlSetBkColor

Posté : mer. 18 mars 2015 17:27
par walkson
Bonjour,
Peut être comme ceci:
► Afficher le texte
Dans l'array, je rentre l'ID des contrôles (un chiffre qui peut varier en fonction du nombre de contrôles) visible dans msgbox

Re: [R] Variable dans GUICtrlSetBkColor

Posté : mer. 18 mars 2015 17:46
par kwabara
Ah, le boulet que je suis... trop de parenthèses ...

Code : Tout sélectionner

GUICtrlSetBKColor($aArray[0][0][color=#80FF40]))[/color], $COLOR_GREEN)
 
=>

Code : Tout sélectionner

GUICtrlSetBKColor($aArray[0][0], $COLOR_GREEN)
 
Ca marche mieux (tout court même)


Merci Walkson c'est impec et merci Mikell pour le 2D :)