Bonjour,
J'aurais aimé faire une fonction du style "GUICtrlRead" pour 2 checkbox ou lorsque 2 checkbox = 1 --> faire telle commande
et si une sur les deux faire autre chose.
J'ai trouvé une fonction _IsChecked mais je n'ai pas compris son fonctionnement.
Merci d'avance
[R] GUICtrlRead(2 Checkbox)
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
[R] GUICtrlRead(2 Checkbox)
Modifié en dernier par nav53 le mer. 19 janv. 2011 11:10, modifié 1 fois.
- zeshrek
- Niveau 10

- Messages : 984
- Enregistré le : mer. 17 nov. 2010 09:31
- Localisation : Sur ma chaise
- Status : Hors ligne
Re: [..] GUICtrlRead(2 Checkbox)
j'ai pas regardé _ischecked, moi je fais plutot comme ca :
Code : Tout sélectionner
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
; un form, 2 checkbox, et un bouton ok
$Form1 = GUICreate("Form1", 275, 151, 192, 114)
$Action = GUICtrlCreateCheckbox("Action a faire", 72, 32, 97, 17)
$Confirm = GUICtrlCreateCheckbox("Confirmation", 72, 64, 97, 17)
$BtnOK = GUICtrlCreateButton("Go", 100, 100, 75, 21)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $BtnOK
_check()
EndSwitch
WEnd
Func _check()
$ActionStatus = BitAND(GUICtrlRead($Action), $GUI_CHECKED) ; on récupere l'état de la premiere checkbox, cochée ou non (on ignore les autres éléments)
$ConfirmStatus = BitAND(GUICtrlRead($Confirm), $GUI_CHECKED) ; idem pour la 2eme
$agir = BitAND($ActionStatus, $ConfirmStatus) ; on compare les deux.
If $agir = True Then
MsgBox(0, "", "Les 2 sont cochés, alors on peut agir")
Else
MsgBox(0, "", "Au moins un des deux n'est pas coché, donc on fait rien")
EndIf
EndFunc ;==>_checkSi vis pacem para bellum
Re: [..] GUICtrlRead(2 Checkbox)
Merci beaucoup je vais tester ça et merci pour les explications j'ai un peu de mal à comprendre avec les "BitAND" 
- zeshrek
- Niveau 10

- Messages : 984
- Enregistré le : mer. 17 nov. 2010 09:31
- Localisation : Sur ma chaise
- Status : Hors ligne
Re: [..] GUICtrlRead(2 Checkbox)
De rien
BitAND fait une opération logique AND sur les valeurs qui lui sont retournées.
Si tu veux faire la même chose a la main, tu les convertis en binaire, tu les supperposes, et ne donne un 1 que les colonnes qui ont toutes un 1.
ex 3 chiffres au pif : 568, 945 et 3565
Tu les passes en binaire, soit : 1000111000, 1110110001, 110111101101
Puis tu les supperpose (en ajoutant des zeros si il faut a gauche pour que les derniers chiffres soient allignés), et tu regardes les colonnes ou il y a des 1 a tous les niveaux :
001000111000
001110110001
110111101101
------------
000000100000
= 32
Ca c'était la théorie.
Maintenant en pratique, qu'est ce que j'ai fait ?
J'ai pris le statut de mes checkbox (les guictrlread) que j'ai 'filtré' pour ne garder que l'état de la coche (le bitand avec $GUI_CHECKED permet de ne garder que celui ci, et de virer les autres status (sélectionné ou non, actif ou non... et (vois l'aide de la commande guicrtlread)))
Ensuite le dernier bitand compare le statut des 2 checkbox.
Si ils sont cochés tous les 2 on a 1, sinon zero.
Et comme 1 = true, je peux faire mon test if $agir=true (je prefere utiliser true que 1, c'est mon choix...
)
BitAND fait une opération logique AND sur les valeurs qui lui sont retournées.
Si tu veux faire la même chose a la main, tu les convertis en binaire, tu les supperposes, et ne donne un 1 que les colonnes qui ont toutes un 1.
ex 3 chiffres au pif : 568, 945 et 3565
Tu les passes en binaire, soit : 1000111000, 1110110001, 110111101101
Puis tu les supperpose (en ajoutant des zeros si il faut a gauche pour que les derniers chiffres soient allignés), et tu regardes les colonnes ou il y a des 1 a tous les niveaux :
001000111000
001110110001
110111101101
------------
000000100000
= 32
Ca c'était la théorie.
Maintenant en pratique, qu'est ce que j'ai fait ?
J'ai pris le statut de mes checkbox (les guictrlread) que j'ai 'filtré' pour ne garder que l'état de la coche (le bitand avec $GUI_CHECKED permet de ne garder que celui ci, et de virer les autres status (sélectionné ou non, actif ou non... et (vois l'aide de la commande guicrtlread)))
Ensuite le dernier bitand compare le statut des 2 checkbox.
Si ils sont cochés tous les 2 on a 1, sinon zero.
Et comme 1 = true, je peux faire mon test if $agir=true (je prefere utiliser true que 1, c'est mon choix...
Si vis pacem para bellum
Re: [..] GUICtrlRead(2 Checkbox)
Ah ok ! Je voyais pas du tout ça sous cet angle. Effectivement je vois mieux ce que fait la fonction maintenant
Et sinon j'ai intégré la fonction à mon script et ça fonctionne super bien merci pour cette aide et ces explications en espérant pouvoir faire d'autres fonctions du même genre seul la prochaine fois
Et sinon j'ai intégré la fonction à mon script et ça fonctionne super bien merci pour cette aide et ces explications en espérant pouvoir faire d'autres fonctions du même genre seul la prochaine fois

