variables dynamiques et ...

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Ciol13
Niveau 3
Niveau 3
Messages : 31
Enregistré le : mer. 01 juin 2016 20:10
Status : Hors ligne

variables dynamiques et ...

#1

Message par Ciol13 »

Bonsoir à tous, après un certain temps sans activité, pour cause d'infidélité avec du VBA, me voilà de nouveau ici pour une question qui sera probablement facile pour les connaisseurs, mais qui me laisse complètement bloqué dans l'état actuel des choses

allez, entrons dans le vif du sujet. je crée un certains nombre de checkbox de la manière suivante
for $l = 1 to $j -1
Assign("Checkbox" & $l, GUICtrlCreateCheckbox("", 100, 190+17*$l, 20, 17))
Next
tout se passe pour le mieux, mais à l'issue de ma procédure, je souhaite "lire" celle qui ont été cochées, puis les remettre toutes décochées pour passer à la question suivante

j'ai tenté un truc dans le genre :
for $l = 1 to $j-1
Assign("Checkbox" & $l, guictrlsetstate("Checkbox" & $l,$gui_unchecked))
next
pour la lecture des box cochées, je n'ai pas encore cherché, je voulais déjà les mettre à 0, mais si vous avez des idées... je ne suis pas contre un coup de main

Merci à tous, bonne soirée
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: variables dynamiques et ...

#2

Message par walkson »

Bonjour,
La méthode la plus simple quand on crée des contrôles à la volée est de les enregistrer dans un array. La variable devient $array[$y]
Je vous mets un exemple

Code : Tout sélectionner

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Array.au3>
Local $text = ""
Global $Form1 = GUICreate("Form1", 243, 600, 192, 90)
$top = 1
Local $array[21]
Local $arrayL[21] =["coucou1","coucou2","coucou3","coucou4","coucou5","coucou6","coucou7","coucou8","coucou9" _
,"coucou10","coucou11","coucou12","coucou13","coucou14","coucou15","coucou16","coucou17","coucou18","coucou19","coucou20","coucou21"]
For $i = 0 To 20
$array[$i] = GUICtrlCreateCheckbox("", 25, $top, 185, 25)
GUICtrlSetData(-1, $arrayL[$i])
$top += 26
Next
$button = GUICtrlCreateButton("OK",25, 550, 50,50)
$button1 = GUICtrlCreateButton("check",85, 550, 50,50)
GUISetState(@SW_SHOW)

_ArrayDisplay($array,"ID enregistrés")

While 1
 $nMsg = GUIGetMsg()
 Switch $nMsg
	Case $GUI_EVENT_CLOSE
	   Exit
	Case $button
		For $y = 0 To UBound($array) - 1
                If _IsChecked($array[$y]) Then
                   $text = ControlGetText($Form1,"",$array[$y])
					Switch $text
						Case "coucou1"
							ShellExecute("http://autoitscript.fr/forum/viewtopic.php?f=3&t=13857")
						Case "coucou2"
							ShellExecute("https://google.fr/")
						Case Else
							MsgBox(0,$text,$array[$y],1)
					EndSwitch

                Else
					ConsoleWrite($array[$y] &  " is not checked." & @CR)
                EndIf
		Next
	 Case $button1
		 For $y = 0 To UBound($array) - 1
			 If _IsChecked($array[$y]) <> $GUI_CHECKED Then
				 GUICtrlSetState($array[$y],$GUI_CHECKED)
			 Else
				 GUICtrlSetState($array[$y],$GUI_UNCHECKED)
			 EndIf

		 Next
	 Case $array[0] To $array[20]
		 $text = ControlGetText($Form1,"",$nMsg)
                If _IsChecked($nMsg) Then

					Switch $text
						Case "coucou1"
							ShellExecute("http://autoitscript.fr/forum/viewtopic.php?f=3&t=13857")
						Case "coucou2"
							ShellExecute("https://google.fr/")
						Case Else
							MsgBox(0, "", $text & "  is checked.",1)
					EndSwitch

                Else
                    MsgBox(0, "", $text &  " is not checked.",1)
                EndIf
 EndSwitch
WEnd
Func _IsChecked($idControlID)
    Return BitAND(GUICtrlRead($idControlID), $GUI_CHECKED) = $GUI_CHECKED
EndFunc   ;==>_IsChecked
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Ciol13
Niveau 3
Niveau 3
Messages : 31
Enregistré le : mer. 01 juin 2016 20:10
Status : Hors ligne

Re: variables dynamiques et ...

#3

Message par Ciol13 »

sympa, merci beaucoup, je n'y aurais même pas songé
Il ne reste plus qu'à adapter tout ça au reste du code

merci beaucoup
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2086
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: variables dynamiques et ...

#4

Message par TommyDDR »

Assign et Eval devraient être supprimés de l'aide, trop de gens les utilisent à tort :p
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2272
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: variables dynamiques et ...

#5

Message par jchd »

Devraient même être supprimés tout court. Je cherche encore une situation où l'un ou l'autre soient absolument nécessaires.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
Nine
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 103
Enregistré le : ven. 17 avr. 2020 01:23
Status : Hors ligne

Re: variables dynamiques et ...

#6

Message par Nine »

Faut pas jeter le bébé avec l'eau du bain. Assign est un outil parmi d'autres. Je ne me souviens pas l'avoir utilisé mais je ne serais pas prêt à l'abandonner pour quelques lubies que ce soit. La plupart de ceux qui s'en serve à profusion, c'est parce qu'ils n'ont pas encore découvert les arrays. Mais faut bien commencer à quelque part, non ?
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2086
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: variables dynamiques et ...

#7

Message par TommyDDR »

@jchd c'est utile dans un cas !
J'avais fait un UDF "_Inspect.au3" qui permet voir la valeur d'une variable
Comme le nom de la variable est entrée dans un champ texte, Eval est nécessaire (et un assigne dans le cas où on voudrait modifier les variables)
Mis à part ce cas très particulier... je n'en vois pas l'utilité ^^
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2272
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: variables dynamiques et ...

#8

Message par jchd »

Oui, mais si le noms des variables susceptibles d'être choisies sont à sélectionner depuis un combobox, on n'a plus besoin d'Eval.
C'est bien ainsi que se présentent tous les débogueurs typiques en usage.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2086
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: variables dynamiques et ...

#9

Message par TommyDDR »

Ah oui ?
Je serais curieux de voir comment le mettre en pratique en AutoIt (si tu as un peu de temps :p)
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2272
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: variables dynamiques et ...

#10

Message par jchd »

Fait à l'arrache mais le principe est là :

Code : Tout sélectionner

Local $a = "aaa", $b = Binary(0x43), $c = 567

AdlibRegister(Show, 941)

For $i = 0 To 99
	$a &= 1
	$b += 1
	$c += 3
	Sleep(30000)
Next
Func Show()
	Static $OQP = 0
	If Not $OQP Then
		$OQP = 1
		Local $vars = [$a, $b, $c]
		; faire une combobx pour le choix de la variable à afficher
		; on récupère l'index de la variable choisie
		MsgBox(0, "", _VarDump($var[$k]))
		$OQP = 0
	EndIf
EndFunc
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2086
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: variables dynamiques et ...

#11

Message par TommyDDR »

Humm, ça demande d'ajouter à la main chaque variables dans $vars avant la compilation (contrairement au eval).
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Répondre