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 :
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
@++
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) :
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
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
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)
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
Code : Tout sélectionner
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
Global $Form1 = GUICreate("Form1", 342, 158, 192, 124)
Global $Button1 = GUICtrlCreateButton("Button1", 40, 24, 89, 33)
Global $Button2 = GUICtrlCreateButton("Button2", 40, 72, 89, 41)
Global $Button3 = GUICtrlCreateButton("Button3", 208, 40, 97, 33)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
Local $Array[2][2] = [[$Button1,"hm"],[$Button2,"one"]]
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button3
for $i = 0 to 1
GUICtrlSetBkColor($Array[$i][0],"0x99CC00")
MsgBox(0,"",$Array[$i][0])
Next
EndSwitch
WEnd
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)
=>
Ca marche mieux (tout court même)
Merci Walkson c'est impec et merci Mikell pour le 2D
