Page 1 sur 1

[R] Cocher une checkbox quand on en coche une autre

Posté : sam. 07 févr. 2009 21:55
par erreur
Bonjour,

Je voudrais faire en sorte que quand on coche la checkbox2, la checkbox1 se coche si elle ne l'est pas et que quand on coche la checkbox3, la checkbox1 et la checkbox2 se cochent si elles ne le sont pas.

Voila mon code d'exemple:
► Afficher le texte
Merci pour votre aide.

Re: [...] Cocher une checkbox quand on en coche une autre

Posté : sam. 07 févr. 2009 22:38
par Tlem
Dans votre boucle d"événement, contrôlez les actions relatif aux CheckBox (Case $check1 ...).
Dans chacun de ces événements (en fonction de la CheckBox cliquée), utilisez la fonction _IsChecked pour connaitre l'état des autres Checkbox et faite ce dont vous avez besoin de faire (Cocher une autre Checkbox par exemple).

Re: [...] Cocher une checkbox quand on en coche une autre

Posté : sam. 07 févr. 2009 23:39
par erreur
Merci,

Donc sa me donne sa:
► Afficher le texte
Le problème, c'est que j'ai deux fois case $check2 donc la deuxième ne fonctionne pas, comment pourrais-je faire ?

Re: [...] Cocher une checkbox quand on en coche une autre

Posté : sam. 07 févr. 2009 23:53
par Tlem
Heuuuu ... Vous avez une drole de logique !!! :shock:

Je vous ait parlé de la fonction _IsChecked, je ne vous ait jamais parlé de créer une fonction totalement inutile comme _IsUnChecked ...

Réfléchissez quelques minutes au lieu d'aller trop vite (comme dans votre autre message sur les GUI's)
La fonction _IsChecked peut vous donner deux informations :
1 ou 0, soit Checked ou UnChecked donc votre fonction _IsUnChecked n'à plus de raison d'être.

De là, il vous reste la dernière réflexion : oui mais j'ai deux cas pour $check2
et je vous répondrais : Gérez le avec les commandes If ... Then ... Else ... EndIf.

Re: [...] Cocher une checkbox quand on en coche une autre

Posté : dim. 08 févr. 2009 00:03
par erreur
A d'accord, je n'avais pas compris comment marchait la fonction _ischecked donc j'avais crée la fonction _isuncheck.Votre explication va résoudre mon problème va résoudre mon problème, merci beaucoup.

Re: [R] Cocher une checkbox quand on en coche une autre

Posté : dim. 08 févr. 2009 00:10
par Tlem
:shock: :shock: :shock:

:cry:

Je vous suggère deux choses :

1 - Prendre le temps de lire les articles tutoriel du forum, quelques messages en rapport avec vos besoins ainsi que la documentation de AutoIt pour vous imprégner du concept de la programmation par langage de script.

ou

2 - Changer de langage car AutoIt n'est peut être pas fait pour vous.

Re: [R] Cocher une checkbox quand on en coche une autre

Posté : dim. 08 févr. 2009 00:17
par erreur
Ne vous inquiétez pas, je ne fait que regarder la documentation Autoit, le problème c'est que je ne suit pas Bilingue.

Re: [R] Cocher une checkbox quand on en coche une autre

Posté : dim. 08 févr. 2009 00:25
par Iste
Je ne le suis pas non plus :D
Mais en regardant les exemple, on aprend beaucoup !
Va voir du coté des exemple de script sur le forum, tu auras des script assez simple, avec des com' en francais :p

Re: [R] Cocher une checkbox quand on en coche une autre

Posté : dim. 08 févr. 2009 00:52
par erreur
Merci, mais j'ai fini par trouver :D
► Afficher le texte

Re: [R] Cocher une checkbox quand on en coche une autre

Posté : dim. 08 févr. 2009 10:55
par Tlem
Oui, vous avez effectivement trouvé une solution.
Mais pourtant vous n'avez pas été jusqu'au bout de la réflexion.

Dans votre case $check2, vous faites deux tests de condition. :shock:
Ce qu'il faut savoir en logique et principalement en informatique, la réflexion est souvent résumée à : 0 ou 1.

Ici c'est la même chose.
Si votre CheckBox n'est pas cochée, c'est qu'elle est décochée et inversement (Donc un seul test vous donne 2 résultats).
De plus, vous rajoutez un test de condition sur la fonction _IsChecked qui ne sert pas à grand chose ( le = 0) puisque celle-ci vous renvois l'état de la CheckBox que vous n'avez qu'à tester par la commande IF.
Ce qui ce résume à :

Code : Tout sélectionner

If _IsChecked($check2) then
   Guictrlsetstate($check1,$GUI_CHECKED)
Else
   Guictrlsetstate($check3,$GUI_UNCHECKED)
EndIf
La lecture de ceci vous apporterais sans doute plus de clarté sur les actions sous condition :
http://www.autoitscript.fr/forum/viewto ... f=11&t=375

*

Re: [R] Cocher une checkbox quand on en coche une autre

Posté : dim. 08 févr. 2009 11:16
par erreur
Oui mais le résultat est le même, à deux mot prêt.

Re: [R] Cocher une checkbox quand on en coche une autre

Posté : dim. 08 févr. 2009 13:28
par Tlem
En la circonstance oui.

Mais sachez que le contrôle CheckBox peut avoir un troisième état ($GUI_INDETERMINATE) et là, votre test ne fonctionnera plus puisque ce ne sera ni 1 ni 0 et donc le Case ne fera aucune action.

Certes, vous me direz que vous n'avez que faire de ce troisième état, mais le problème reste entier pour des cas plus ou moins similaires.
Si plus tard vous devez réaliser des actions sous condition, vous devez prendre les bonnes habitude dés le début, sinon vous risquez de passer à coté de certaines erreurs de base sur ce type de contrôle.

Re: [R] Cocher une checkbox quand on en coche une autre

Posté : dim. 08 févr. 2009 13:37
par erreur
A d'accord merci pour l'info mais a quoi sert ce troisième état?

Re: [R] Cocher une checkbox quand on en coche une autre

Posté : dim. 08 févr. 2009 13:45
par Tlem
Extrait de l'aide :
$GUI_INDETERMINATE
Checkbox having the tristate attribute will be greyed.

Re: [R] Cocher une checkbox quand on en coche une autre

Posté : dim. 08 févr. 2009 14:26
par erreur
ok, merci