OVH Cloud OVH Cloud

Surement simple

9 réponses
Avatar
JCM
Bonjour

j'ai un questionnaire avec plusieurs txtBox, je voudrais
que le curseur se place dans la premiere et ensuite apres
chaque Enter qu'il se place dans la suivante.

Comment fait-on ?

Cordialement
JCM

9 réponses

Avatar
ng
Salut,
Si tu utilises un groupe de controle :

Private Sub MesText_KeyPress(Index As Integer, KeyAscii As Integer)
If KeyAscii = vbKeyReturn Then '13
If Index < MesText.Count - 1 Then
Call MesText(Index + 1).SetFocus
Else
Call MesText(0).SetFocus
End If
KeyAscii = 0 'vide le buffer de touche
End If
End Sub

Sinon tu peux utiliser ce code (mais la première méthode est néttement
meilleur) :

Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Call SendKeys("{TAB}", True)
KeyAscii = 0
End If
End Sub

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

JCM wrote:
Bonjour

j'ai un questionnaire avec plusieurs txtBox, je voudrais
que le curseur se place dans la premiere et ensuite apres
chaque Enter qu'il se place dans la suivante.

Comment fait-on ?

Cordialement
JCM


Avatar
surfeur75
Bonjour,

Faut capter le clavier, et si <return> = textX.Setfocus, d'ailleurs on
devrait toujours faire ça, ça laisse le choix à l'utilisateur, soit il
change de champ en faisant return, ou Tab, ou avec la souris, ceux qui
saisissent vite préfèrent rester au clavier et terminer par un <rc>...

Tu mets une procédure d'évènement de clavier ainsi:

Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
if keycode = 13 then TextX+1.setfocus
End Sub
--
@+, bye, Joe.
Pour m'écrire ng75AROBASEnoosPOINTfr
remplace AROBASE et POINT par leur vrai signe
Il l'a fait car il ne savait pas que c'était impossible, alea jacta est!


"JCM" a écrit dans le message de news:
2e9e01c3e1c5$2c3825f0$
Bonjour

j'ai un questionnaire avec plusieurs txtBox, je voudrais
que le curseur se place dans la premiere et ensuite apres
chaque Enter qu'il se place dans la suivante.

Comment fait-on ?

Cordialement
JCM


Avatar
Zoury
Salut Jean-Claude! :O)

Le standard sur les systèmes Windows veut que ce soit la touche TAB et
Shift-TAB qui permettent la navigation entre les différents contrôles d'un
formulaire.. je te conseilles donc de ne *pas* modifier cette aspect.. si
tes utilisateurs chialent, expliquent leur.. ;O)

Maintenant pour ce qui est de placer correctement l'ordre de la
"tabulation", tu dois utiliser la propriété TabIndex des contrôles... Le
plus facile est d'utiliser l'indispensable utilitaire MzTools
(www.mztools.com) qui offre une fonctionnalité de tabulation automatique.
Cette dernière donne des résultats plus que satisfaisant et même sur les
formulaires complexes... Si tu veux toutefois le faire manuellement, le plus
facile et de se placer sur le dernier contrôle, de lui affecté la valeur 0 à
TabIndex, ensuite tu cliques sur l'avant dernier, tu pèse sur 0 (car la
propriété TabIndex reste sélectionnée par défaut), et ansi de suite..

note que si tu veux qu'un contrôle soit omit de la tabulation, tu peux
placer sa propriété TabStop (s'il en a une) à False.


--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/

Merci de poster les réponses au groupe afin d'en faire profiter à tous
Avatar
ng
Sinon pour que le curseur se place directement dans le premier textbox, mets
ca propriété TabIndex à 0, de plus le code (seuxième méthode) que j'ai posté
respecte les TabIndnex, il faudra donc veiller à bien les définir dans
l'ordre.

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

JCM wrote:
Bonjour

j'ai un questionnaire avec plusieurs txtBox, je voudrais
que le curseur se place dans la premiere et ensuite apres
chaque Enter qu'il se place dans la suivante.

Comment fait-on ?

Cordialement
JCM


Avatar
François Picalausa
Bonjour/soir,

l'article suivant de la KB décrit une méthode possible:
http://support.microsoft.com/?id2816

<quote src="http://support.microsoft.com/?id2816">
However, using the ENTER key to move the focus does not follow recommended
Microsoft Windows-based application design guidelines. The ENTER key should
be used to process the default command or to process entered information,
not to move the focus.
</quote>

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com


"JCM" a écrit dans le message de
news:2e9e01c3e1c5$2c3825f0$
Bonjour

j'ai un questionnaire avec plusieurs txtBox, je voudrais
que le curseur se place dans la premiere et ensuite apres
chaque Enter qu'il se place dans la suivante.

Comment fait-on ?

Cordialement
JCM


Avatar
ng
>Le standard sur les systèmes Windows veut que ce soit la touche TAB et
Shift-TAB qui permettent la navigation entre les différents contrôles d'un
formulaire.. je te conseilles donc de ne pas modifier cette aspect.. si
tes utilisateurs chialent, expliquent leur.. ;O)


Certes mais dans un formulaire de saisie, il peut s'avèrer pratique
d'utiliser la touche Enter pour passer au suivant, de plus cela ne désactive
pas la touche TAB donc chaque utilisateur fera comme il veut.

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

Zoury wrote:
Salut Jean-Claude! :O)

Le standard sur les systèmes Windows veut que ce soit la touche TAB et
Shift-TAB qui permettent la navigation entre les différents contrôles
d'un formulaire.. je te conseilles donc de ne *pas* modifier cette
aspect.. si tes utilisateurs chialent, expliquent leur.. ;O)

Maintenant pour ce qui est de placer correctement l'ordre de la
"tabulation", tu dois utiliser la propriété TabIndex des contrôles...
Le plus facile est d'utiliser l'indispensable utilitaire MzTools
(www.mztools.com) qui offre une fonctionnalité de tabulation
automatique. Cette dernière donne des résultats plus que satisfaisant
et même sur les formulaires complexes... Si tu veux toutefois le
faire manuellement, le plus facile et de se placer sur le dernier
contrôle, de lui affecté la valeur 0 à TabIndex, ensuite tu cliques
sur l'avant dernier, tu pèse sur 0 (car la propriété TabIndex reste
sélectionnée par défaut), et ansi de suite..

note que si tu veux qu'un contrôle soit omit de la tabulation, tu peux
placer sa propriété TabStop (s'il en a une) à False.


Avatar
Zoury
> Certes mais dans un formulaire de saisie, il peut s'avèrer pratique
d'utiliser la touche Enter pour passer au suivant, de plus cela ne


désactive
pas la touche TAB donc chaque utilisateur fera comme il veut.



c'est un point de vue... mais personnelement, j'adère fortement au <quote>
présenté par François de la MSDN.. quand j'appuie sur Enter je *m'attend* à
ce qu'une action soit lancé..


--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/

Merci de poster les réponses au groupe afin d'en faire profiter à tous
Avatar
ng
Moi aussi mais je ne parlais pas pour moi... (on prend vite l'habitude dans
les formulaires web), le mieux, je pense, serait de proposer ce choix dans
les options du programme, en mettant Tab par défaut.

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

Zoury wrote:
Certes mais dans un formulaire de saisie, il peut s'avèrer pratique
d'utiliser la touche Enter pour passer au suivant, de plus cela ne
désactive pas la touche TAB donc chaque utilisateur fera comme il
veut.



c'est un point de vue... mais personnelement, j'adère fortement au
<quote> présenté par François de la MSDN.. quand j'appuie sur Enter
je *m'attend* à ce qu'une action soit lancé..


Avatar
JCM
Merci à tous

pour ce débat riche d'enseignement

Cordialement
JCM
-----Message d'origine-----
Bonjour/soir,

l'article suivant de la KB décrit une méthode possible:
http://support.microsoft.com/?id2816

<quote src="http://support.microsoft.com/?id2816">
However, using the ENTER key to move the focus does not


follow recommended
Microsoft Windows-based application design guidelines.


The ENTER key should
be used to process the default command or to process


entered information,
not to move the focus.
</quote>

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com


"JCM" a écrit dans le


message de
news:2e9e01c3e1c5$2c3825f0$
Bonjour

j'ai un questionnaire avec plusieurs txtBox, je voudrais
que le curseur se place dans la premiere et ensuite




apres
chaque Enter qu'il se place dans la suivante.

Comment fait-on ?

Cordialement
JCM




.