[R] Est il possible de construire une variable ?

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Julien
Niveau 5
Niveau 5
Messages : 141
Enregistré le : sam. 02 août 2008 17:01
Status : Hors ligne

[R] Est il possible de construire une variable ?

#1

Message par Julien »

Bonjour,

Je m'explique, j'ai une série de case à cocher avec des noms génériques de type :

Code : Tout sélectionner

Global $Check_apps_1 = GUICtrlCreateCheckbox("Apps 1", 32, 166, 97, 17)
J'en ai 21 au total. Je voudrais leur donner des noms stocker dans un tableau :

Code : Tout sélectionner

Global $Name[5] = [4 _
    , "Nom 1" _
    , "Nom 2" _
    , "Nom 3" _
    , "etc.." _
]
 
L'idéal serait de faire une boucle pour limiter le code et la je bloque.
Je sais que ce qui suit ne fonctionne pas :

Code : Tout sélectionner

$h = 1
For $j = $Name[0] To 1 Step -1
    GUICtrlSetData($Check_apps_[$h], $Name[$j])
    $h = $h + 1
Next
 
Mais est-ce possible d'incrémenter la variable $Check_apps_X ?

D'avance merci.
Modifié en dernier par Julien le sam. 15 oct. 2011 17:27, modifié 3 fois.
Avatar du membre
matwachich
Membre émérite
Membre émérite
Messages : 986
Enregistré le : lun. 19 oct. 2009 04:04
Localisation : Algérie
Status : Hors ligne

Re: [..] Est il possible de construire une variable ?

#2

Message par matwachich »

C'est quoi ça, tout seul sur une ligne???

Code : Tout sélectionner

$Check_apps_[$h]
Sortons VW du coté obscure! - La curiosité est un vilain défaut! Cliquez ici
Julien
Niveau 5
Niveau 5
Messages : 141
Enregistré le : sam. 02 août 2008 17:01
Status : Hors ligne

Re: [..] Est il possible de construire une variable ?

#3

Message par Julien »

Une erreur de copier/coller je viens de corriger.

peux être existe t'il une autre méthode ?
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] Est il possible de construire une variable ?

#4

Message par Iste »

Vous pouvez utiliser un tableau pour noter les id.

Sinon, voir http://autoitscript.fr/forum/viewtopic. ... 372#p42372
Signez ici
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Est il possible de construire une variable ?

#5

Message par mikell »

Pas bien compris, avec les $Name tu veux changer le nom de la variable-checkbox ou le texte de la checkbox ?
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Julien
Niveau 5
Niveau 5
Messages : 141
Enregistré le : sam. 02 août 2008 17:01
Status : Hors ligne

Re: [..] Est il possible de construire une variable ?

#6

Message par Julien »

Je veux afficher les noms de mes 21 checkbox en fonction du array qui contient les 21 noms.
Avatar du membre
moi
Niveau 7
Niveau 7
Messages : 370
Enregistré le : sam. 09 juil. 2011 22:14
Localisation : devant sont ordinateur
Status : Hors ligne

Re: [..] Est il possible de construire une variable ?

#7

Message par moi »

l'array est défini avant la creation d'une gui
puis un for semble nous tendre les bras

Code : Tout sélectionner

for $i = 0 to ubond($array) step 1
$arrayquigereleschek[$i] = guictrlcreatecheckbox($array[$i],[color=#FF0000][formule qui définie la place,idem][/color])
next
ce qui est en rouge est a remplacer par une formule qui définie la place comme 8*$i etc...
le problème ce n'est pas un problème, le seul problème ici c'est nous.

j'aime NYAN CAT Image
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Est il possible de construire une variable ?

#8

Message par mikell »

Ces explications sont plutôt confuses mais ça me semble effectivement être la meilleure solution Image
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
GaRydelaMer
Niveau 7
Niveau 7
Messages : 450
Enregistré le : mer. 18 mars 2009 22:12
Localisation : Montpellier
Status : Hors ligne

Re: [..] Est il possible de construire une variable ?

#9

Message par GaRydelaMer »

Bonsoir

y'a beaucoup d'erreur dans ta gestion des tableaux.

1/ For $i = 0 yo Ubound($array) -1

2/ c pas une erreur mais ca sert à rien Step 1, la boucle for incrémente toujours de 1 si Step n'est pas spécifier

Maintenant voila comment je fais:

Code : Tout sélectionner

Local $aCheckBoxs[6][3] = [ [5, 0, 0], _  ;       Ici initialisation du tableau [6] éléments (le 1er [0] pour stocker le nombre de chkb, [3] colonnes, donc [5] sur la 1ere ligne
        ["Nom 1", True], _ ;    Ici La 1ere Chkb, texte "Nom1", et on la veux coché
        ["Nom 2"], _
        ["Nom 3", True], _
        ["Nom 4"], _
        ["Nom 5"]]


Local $Left = 10, $Top = 30
; Ici on va lire le tableau en partant de 1, jusqu'a 5 ( $aCheckBoxs[0][0] ) donc on va créer 5 chkb, le $i va représenter les ligne du tableau
For $i = 1 To $aCheckBoxs[0][0]
    $aCheckBoxs[$i][2] = GUICtrlCreateCheckbox($aCheckBoxs[$i][0], $Left, $Top * $i), ici je stocke le CtrlId dans la 3ème colonne $aCheckBoxs[$i][2], et je prends le texte dans le tableau la 1ere colonne $aCheckBoxs[$i][0]
    If $aCheckBoxs[$i][1] Then GUICtrlSetState(-1, $GUI_CHECKED), ici je vérifie la 2eme colonne pour coché ou non la ckb
Next
 
Maintenant pour lire les valeurs c'est pareil dans l'autre sens

Code : Tout sélectionner

For $i = 1 To $aCheckBoxs[0][0]
    $aCheckBoxs[$i][1] = False
    If _IsChecked($aCheckBoxs[$i][2]) Then
        $aCheckBoxs[$i][1] = True
        ConsoleWrite("ChkB: " &$aCheckBoxs[$i][2] & " Text: " & $aCheckBoxs[$i][0] & " est coché" & @LF)
    EndIf
Next

Func _IsChecked($h_ctrl)
    Return BitAND(GUICtrlRead($h_ctrl), $GUI_CHECKED) = $GUI_CHECKED
EndFunc   ;==>_IsChecked
 
Alors explication, je créer un tableau à 2 dimension, pour définir et stocker les ID des contrôles.

Écris de cette façon je trouve que la création de tableau est plus claire, Donc on a 5 checkboxs, et le tableau a 3 colonnes dans la 2eme dimmension, pour stocker le texte utilisé au moment de la création, en suite si on veut l’état coché à la création, et dans la dernière le CtrlId
Julien
Niveau 5
Niveau 5
Messages : 141
Enregistré le : sam. 02 août 2008 17:01
Status : Hors ligne

Re: [..] Est il possible de construire une variable ?

#10

Message par Julien »

Bonjour,

J'etais en train de regarder de ce coté :

Code : Tout sélectionner

    For $i = 1 To $Name[0]
        Assign("Check_apps", "Check_apps_" & $i, 2)
        GUICtrlSetData($Check_apps, $Name[$i])
    Next
 
Mais cela ne fonctionne pas le $Check_apps renvoie bien le nom modifié par Assign mais n'est pas pris en compte dans le GUICtrlSetData.

Je vais regarder autre chose.
moi a écrit :l'array est défini avant la creation d'une gui
puis un for semble nous tendre les bras

Code : Tout sélectionner

for $i = 0 to ubond($array) step 1
$arrayquigereleschek[$i] = guictrlcreatecheckbox($array[$i],[color=#FF0000][formule qui définie la place,idem][/color])
next
ce qui est en rouge est a remplacer par une formule qui définie la place comme 8*$i etc...
Je préfère ne pas procéder ainsi pour garder mon code GUI généré par Koda le plus propre possible en cas de modification.
Julien
Niveau 5
Niveau 5
Messages : 141
Enregistré le : sam. 02 août 2008 17:01
Status : Hors ligne

Re: [..] Est il possible de construire une variable ?

#11

Message par Julien »

Je n'etais pas très loin car cela fonctionne avec :

Code : Tout sélectionner

 For $i = 1 To $Name[0]
        Assign("Check_apps", "Check_apps_" & $i, 2)
        GUICtrlSetData(Eval($Check_apps), $Name[$i])
    Next
Je vais faire mes test pour savoir si cette solution me convient sinon j’opterais pour la dernière réponse (que je viens de comprendre).

Merci pour l'aide.
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] Est il possible de construire une variable ?

#12

Message par Iste »

Vous n'avez pas besoin de la fonction Assign(), remplacez simplement

Code : Tout sélectionner

GUICtrlSetData($Check_apps_[$h], $Name[$j])
par

Code : Tout sélectionner

GUICtrlSetData(Eval("Check_apps_" & $i), $Name[$j])
edit : corrigé
Signez ici
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11830
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Est il possible de construire une variable ?

#13

Message par Tlem »

*** Attention, avec Eval il ne faut pas utiliser le '$'. :mrgreen:
J'me suis fait avoir aussi en écrivant une réponse de tête. :wink:
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] Est il possible de construire une variable ?

#14

Message par Iste »

Image
je le savais pourtant...
Signez ici
Julien
Niveau 5
Niveau 5
Messages : 141
Enregistré le : sam. 02 août 2008 17:01
Status : Hors ligne

Re: [..] Est il possible de construire une variable ?

#15

Message par Julien »

Iste a écrit :Vous n'avez pas besoin de la fonction Assign(), remplacez simplement

Code : Tout sélectionner

GUICtrlSetData($Check_apps_[$h], $Name[$j])
par

Code : Tout sélectionner

GUICtrlSetData(Eval("Check_apps_" & $i), $Name[$j])
edit : corrigé
Merci à tous pour votre aide.
Répondre