[R] Variable dans GUICtrlSetBkColor

Aide sur les Interfaces Graphique Utilisateurs (GUI).
Règles du forum
.
Répondre
kwabara
Niveau 1
Niveau 1
Messages : 4
Enregistré le : lun. 16 mars 2015 22:14
Status : Hors ligne

[R] Variable dans GUICtrlSetBkColor

#1

Message 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)

@++
Modifié en dernier par kwabara le mer. 18 mars 2015 19:58, modifié 1 fois.
Avatar du membre
ZDS
Membre émérite
Membre émérite
Messages : 554
Enregistré le : jeu. 10 juin 2010 10:35
Localisation : 22300 Cul-d'chouette Langue-de-vache
Status : Hors ligne

Re: [..] Variable dans GUICtrlSetBkColor

#2

Message 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 !
ZDS : Chef de projet du nAiO (logiciel AutoIt gratuit sous licence CC 4.0 BY-NC-SA)
Tout problème a une solution, donc si il y a pas d'solution, c'est qu'il y a pas d'problème !
kwabara
Niveau 1
Niveau 1
Messages : 4
Enregistré le : lun. 16 mars 2015 22:14
Status : Hors ligne

Re: [..] Variable dans GUICtrlSetBkColor

#3

Message 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.

@++
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Variable dans GUICtrlSetBkColor

#4

Message 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)
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
kwabara
Niveau 1
Niveau 1
Messages : 4
Enregistré le : lun. 16 mars 2015 22:14
Status : Hors ligne

Re: [..] Variable dans GUICtrlSetBkColor

#5

Message 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

@++
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1020
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: [..] Variable dans GUICtrlSetBkColor

#6

Message 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
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
kwabara
Niveau 1
Niveau 1
Messages : 4
Enregistré le : lun. 16 mars 2015 22:14
Status : Hors ligne

Re: [R] Variable dans GUICtrlSetBkColor

#7

Message 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 :)
Répondre