SetFocus

Signaler
Messages postés
315
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
22 décembre 2014
-
Messages postés
47
Date d'inscription
dimanche 16 mars 2008
Statut
Membre
Dernière intervention
14 octobre 2009
-
Bonsoir,

J'ai une application avec plusieurs form
Dans une form, j'ai plusieurs frame.
Et je voudrais provoquer un setfocus direct
sur l'un ou l'autre contrôle d'une autre frame.

J'ai déjà utilisé la propriété TabIndex
(sensé prendre la séquence des contrôles).

Mais c'est alors qu'il faut cliquer 2 fois
sur le nouveau contrôle :
on dirait que le 1e click
correspond à l'abandon du l'ancien contrôle ;
et que le 2e click sert
à prendre le focus sur le contrôle réellement désiré.

Comment éviter ce clickage en deux étapes ?

Merci d'avance pour votre aide.
A voir également:

7 réponses

Messages postés
47
Date d'inscription
dimanche 16 mars 2008
Statut
Membre
Dernière intervention
14 octobre 2009
3
Bonjour,

Pourquoi utilises-tu TabIndex?  Il y a SetFocus. Ex: TextBox1.SetFocus
Messages postés
315
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
22 décembre 2014

Peux-tu m'expliquer alors comment faire passer de zone en zone
avec la touche "tab"... Si je ne me trompe pas, il n'y a pas d'autre moyen que d'utiliser tabindex...

Qu'en penses-tu ?
Messages postés
47
Date d'inscription
dimanche 16 mars 2008
Statut
Membre
Dernière intervention
14 octobre 2009
3
As-tu paramétré l'ordre de tabulation?

Pour cela:
Dans le VBE sélectionne ton premier "Frame" puis clique droit dessus. Clique enfin sur Ordre de tabulation.
Fait monter et descendre les controles selon l'ordre dans lequel tu veux passer de l'un à l'autre (le 1er tout en haut, en dessous le 2ème,ect... Les étiquettes ne comptent pas comme l'utilisateur ne peut pas écrire directement dessus.)
Fait le pour chaque frame.
Enfin pour terminer, tu sélectionnes le formulaire et tu fais pareil sauf que là tu devrais voir dans la liste de controles les frames. Place les dans l'ordre que tu veux.
Messages postés
315
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
22 décembre 2014

Désolé
j'ai beau faire clic droit...
Je ne trouve pas cela en visual basic...

Pourquoi ?
Messages postés
47
Date d'inscription
dimanche 16 mars 2008
Statut
Membre
Dernière intervention
14 octobre 2009
3
Excuse-moi j'étais partis sous vba...
Effectivement sous visual il faut utiliser la propriété TabIndex.
J'ai testé, j'ai définis les tabindex dans l'ordre que j'ai voulu est cela à fonctionné. Je n'ai pas eu à cliquer 2 fois, la touche Tab a suffit.
Messages postés
315
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
22 décembre 2014

Oui mais comment faire quand les contrôles sont dans des frames différentes ?
Faut-il mettre les tabindex d'abord de frame en frame et puis de contrôle à contrôle ?
Vu que de contrôle à contrôle (toutes frames confondues), cela ne marche pas !

Merci de ton aide.
Messages postés
47
Date d'inscription
dimanche 16 mars 2008
Statut
Membre
Dernière intervention
14 octobre 2009
3
Cela ne change rien si les frames sont sur le même formulaire, VB donne le focus du TabIndex le plus petit au plus grand.
Les frames et les labels ont un TabIndex mais comme l'utilisateur ne peut pas les modifiers directement vb l'incrémente jusqu'à trouver un textbox ou un autre controle modifiable pour lui donner le focus lors de l'appuie sur la touche tabulation.

Si tu n'as pas le déplacement que tu veux il faut revoir les valeurs que tu as saisie.
C'est simple si en appuyant sur TAB tu te déplaces sur le controle que tu ne veux pas c'est parceque la valeur de son tabindex est plus petit que celui du controle que tu voudrais sélectionner