[R] ControlDisable et la navigation au clavier

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
fredone
Niveau 1
Niveau 1
Messages : 12
Enregistré le : dim. 26 avr. 2009 09:43
Status : Hors ligne

[R] ControlDisable et la navigation au clavier

#1

Message par fredone »

bonjour,

j'utilise 2 liste de radio boutons (séparer par "GuiCtrlCreateGroup") et les choix dans la première liste influe sur ceux de la deuxième. J'ai donc trouvé la solution de griser les contrôles de la deuxième liste en utilisant la fonction "ControlDisable" cela fonctionne plutôt bien. MAIS il y a un mais !

si comme dans l'exemple ci-dessous je grise le premier élément de la deuxième liste, et que je navigue au clavier (tabulation) mon focus ne passe plus dans la seconde liste

comment faire !!!!

Pour tester l'exemple ci-dessous il faut Sélectionner le premier radio de la première liste et tenter de d'atteindre la deuxième liste par la tabulation !
► Afficher le texte
Modifié en dernier par fredone le sam. 15 août 2009 23:37, modifié 1 fois.
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..] ControlDisable et la navigation au clavier

#2

Message par orax »

Vous pourriez ajouter le style $WS_TABSTOP pour passer à l'élément suivant.

Code : Tout sélectionner

#include <WindowsConstants.au3>
[...]
    GuiCtrlCreateGroup("Positif", 30, 30, 440, 115)
    $radio1 = GUICtrlCreateRadio($questradio1, 60, 60, 400, 20,$WS_TABSTOP)
    $radio2 = GUICtrlCreateRadio($questradio2, 60, 80, 400, 20,$WS_TABSTOP)
    $radio3 = GUICtrlCreateRadio($questradio3, 60, 100, 400, 20,$WS_TABSTOP)
    $radio4 = GUICtrlCreateRadio($questradio4, 60, 120, 400, 20,$WS_TABSTOP)
    GUICtrlCreateGroup ("",-99,-99,1,1)  ;close group
   
    GuiCtrlCreateGroup("Négatif", 30, 150, 440, 115)
    $radio5 = GUICtrlCreateRadio($questradio1, 60, 180, 400, 20,$WS_TABSTOP)
    $radio6 = GUICtrlCreateRadio($questradio2, 60, 200, 400, 20,$WS_TABSTOP)
    $radio7 = GUICtrlCreateRadio($questradio3, 60, 220, 400, 20,$WS_TABSTOP)
    $radio8 = GUICtrlCreateRadio($questradio4, 60, 240, 400, 20,$WS_TABSTOP)
    GUICtrlCreateGroup ("",-99,-99,1,1)  ;close group
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11816
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] ControlDisable et la navigation au clavier

#3

Message par Tlem »

Je pense que le codage correct de votre GUI devrait résoudre le problème.
Cet exemple vous montre comment faire pour ne pas avoir d'interaction entre deux listes de RadioBox :
► Afficher le texte
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é".
fredone
Niveau 1
Niveau 1
Messages : 12
Enregistré le : dim. 26 avr. 2009 09:43
Status : Hors ligne

Re: [..] ControlDisable et la navigation au clavier

#4

Message par fredone »

bonjour,

et merci pour vos réponses: mais, il y a un mais.

@Orax, ta solution permet en effet de contourner le problème, mais il crée un comportement anormal de la tabulation. En effet lorsque les éléments d'une liste sont groupés, la tabulation fait entrer et sortir de cette liste. Alors qu'en appliquant ta solution, la tabulation parcours les éléments de la liste.

@Tlem, je n'ai pas bien compris ton message, j'utilise bien "GuiCtrlCreateGroup" pour grouper mes radio-boutons mais je désire créer une interaction entre mes deux listes de radio-boutons... Car les deux liste sont les mêmes et on ne peut répondre la même questions aux deux listes. donc si on choisit la question 1 dans la première liste, alors la question 1 dans la seconde apparait grisée. (mais lors de l'accès par la tabulation la seconde liste est alors ignorée !!)

je continue a plancher sur le problème, mais suis toujours preneurs de vos solutions !!!
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11816
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] ControlDisable et la navigation au clavier

#5

Message par Tlem »

Bien. Visiblement j'avais compris l'inverse, c'est à dire aucune interaction.

Cela dit, je ne vois aucun intérêt à votre question, puisque vous dites :
Car les deux liste sont les mêmes et on ne peut répondre la même questions aux deux listes.
Donc quel serait l'intérêt de pouvoir cliquer sur la deuxième liste puisque les questions sont les même que la première ... :shock:

Mais effectivement, si vous désactivez le premier élément d'un groupe, vous ne pouvez plus y accéder avec la tabulation.
Ceci est tout à fait normal, puisque le premier élément d'un groupe est celui qui doit être atteint par la tabulation, mais comme il est désactivé .... :roll:
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é".
fredone
Niveau 1
Niveau 1
Messages : 12
Enregistré le : dim. 26 avr. 2009 09:43
Status : Hors ligne

Re: [..] ControlDisable et la navigation au clavier

#6

Message par fredone »

mes explications manquaient de clarté !!

c'est les mêmes réponses (les 2 listes) mais avec des questions différentes... choisir dans la premiere liste ce qui vous définis le mieux et dans la deuxieme ce qui vous définis le moins... et les 4 réponses sont les mêmes... et nous ne pouvons évidement pas choisir la même réponse...

comme tu le dis c'est normal et je le conçoit, mais je cherche a détourner le problème et à donner le focus au deuxième élément de la deuxième liste après la tabulation !!!!

je pourrais aussi laisser le control actif et prévenir l'utilisateur qu'il ne peut la sélectionner une deuxième fois... si il tente de la cocher...
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11816
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] ControlDisable et la navigation au clavier

#7

Message par Tlem »

fredone a écrit :je pourrais aussi laisser le control actif et prévenir l'utilisateur qu'il ne peut la sélectionner une deuxième fois... si il tente de la cocher...
Cela me semble la solution la plus 'simple'.

Edit : Sinon vous pouvez tout simplement faire ceci :
► Afficher le texte
Aucun message, mais au moins, il sait à quoi s'en tenir. ;)
Et Puis s'est quand même plus simple que de rajouter un message qu'il faudra valider.
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é".
fredone
Niveau 1
Niveau 1
Messages : 12
Enregistré le : dim. 26 avr. 2009 09:43
Status : Hors ligne

Re: [..] ControlDisable et la navigation au clavier

#8

Message par fredone »

ta solution est complètement valable, mais je travaille sur une appli destiné à des personnes non voyantes, ils doivent donc être prévenus de leurs actions... je vais opter pour la solution du message...

merci à vous, solutionnez par une alternative !
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11816
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [R] ControlDisable et la navigation au clavier

#9

Message par Tlem »

La solution du message me semble plutôt lourde. Mais comme vous me donnez plus d'infos sur le type d'utilisateur, vous pouvez aussi utiliser le son.
Donc en même temps que le

Code : Tout sélectionner

If _IsChecked($Radio3) Then GUICtrlSetState($Radio1, $GUI_UNCHECKED)
vous pourriez rajouter un beep.
► Afficher le texte
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é".
fredone
Niveau 1
Niveau 1
Messages : 12
Enregistré le : dim. 26 avr. 2009 09:43
Status : Hors ligne

Re: [R] ControlDisable et la navigation au clavier

#10

Message par fredone »

les personnes susceptibles d'utiliser cette application utilisent déjà un lecteur d'écran (qui pilote une synthèse vocale).

malheureusement, un bip n'est pas assez explicite pour signifier à l'utilisateur que l'action a décocher l'autre radio bouton. je préfère parfois être lourd qu'imprécis !

la solution de changer le label du radio bouton est peut être une solution (le label contiendrait alors le message d'avertissement).

Mais votre solution peut fonctionner car si on décoche le premier radio bouton et vu que je vais obliger à une réponse, l'utilisateur aura un message si il persiste !

merci à vous.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11816
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [R] ControlDisable et la navigation au clavier

#11

Message par Tlem »

Bon allé, je suis en forme. ;)
Puisqu'il ne peut y avoir qu'un seul choix, le plus simple est peut être de désactiver le premier choix si différent du second, comme cela, pas de son ni de message, mais un choix logique. ;)

Genre:
► Afficher le texte
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é".
fredone
Niveau 1
Niveau 1
Messages : 12
Enregistré le : dim. 26 avr. 2009 09:43
Status : Hors ligne

Re: [R] ControlDisable et la navigation au clavier

#12

Message par fredone »

merci de ton (votre) aide, mais pour une appli destiné au non voyant il faut qu'un action soit explicite, apres avoir cocher un radio bouton on doit entendre coché... et donc si cela coche ou décoche un radio bouton l'utilisateur doit etre prévenu...

donc je vais mixer toutes vos solutions...
Répondre