TabIndex

Résolu
Zylott Messages postés 104 Date d'inscription jeudi 25 juillet 2002 Statut Membre Dernière intervention 28 septembre 2006 - 8 juin 2006 à 23:19
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 - 10 juin 2006 à 15:20
Bjr,

comment peut on savoir si la propriete TabIndex existe sur un controle ?
En evitant les on error resume next, merci.

7 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
8 juin 2006 à 23:37
Salut
Comme je suis Champion du monde de boule de cristal - 2005, je devine que tu récupères la liste des contrôles d'une forme et que tu veux travailler dessus.
Tu dois donc avoir fait une boucle du genre :
Dim monControle As Control
Dim No As Long
No = 0
For Each monControle In Me
   monControle.TabIndex = No
   No = No + 1
Next
Et donc, quand tu essayes de faire ça sur un controle qui n'a pas de de TabIndex (parce qu'il ne peut pas capter le Focus), tu as une erreur.

Il n'y a pas de remède magique.
Soit tu utilises la gestion d'erreur :
No = 0
For Each monControle In Me
   On Error Resume Next
   monControle.TabIndex = No   If Err.Number 0 Then No No + 1
   On Error Goto LabelErreur
Next
Soit tu filtres les controles par type :
No = 0
For Each monControle In Me
   If TypeOf monControle Is TextBox Or _
       TypeOf monControle Is ListBox Then
           monControle.TabIndex = No
           No = No + 1
   End If
Next

Est-ce que ma boule de cristal fonctionne encore bien ?

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Champion du monde de boule de cristal - 2005
Le savoir est la seule matière qui s'accroit quand on le partage (Socrate)
3
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
8 juin 2006 à 23:24
Salut,

1/ Dans ton code (éditeur VB), tape le nom du contrôle et le point et vérifie dans la liste déroulante
ex avec l'ascenseur :
Text1.SetFocus
.SpecialEffect
.TabIndex
.etc...

ou 2/ sélectionne ton contrôle et regarde dans la fenêtre des propriétés, si TabIndex apparait, c'est qu'il existe pour ce contrôle.

@++

--Mortalino--
Le Mystérieux Chevalier "Provençal, le Gaulois"
N'oubliez pas de lire le règlement !
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
8 juin 2006 à 23:59
Salut Jack !

Tu me prévois quoi pour mon avenir ?

Non, en fait, Zylott à posé sa question, j'ai répondu ainsi que toi, mais dans la FullList, à "Rep.", le chiffre 3 apparait ???? au lieu de 2

Bien sur si le problème continue, après ajout de mon Post, ça va afficher 4.

Enfin voilà, désolé, rien à voir avec le code, mais bon...

@++

--Mortalino--
Le Mystérieux Chevalier "Provençal, le Gaulois"
N'oubliez pas de lire le règlement !
0
Zylott Messages postés 104 Date d'inscription jeudi 25 juillet 2002 Statut Membre Dernière intervention 28 septembre 2006
9 juin 2006 à 08:50
Bjr,

je precise car je me suis peut-etre mal exprimé :
je ne parlais pas dans l'environnement de Dev mais dans mon application.

Mon application utilise plus le clavier que la souris.
La form principale contient un tableau avec lequel j'utilise la touche Tab pour naviguer (et saisir) de cellule en cellule. Mais lorsque je suis arrivé à la dernière ligne du tableau , je souhaite que le focus soit mis sur le controle suivant.
Pb 1/ Certains controles n'ont pas la propriété TabIndex =>plantage.
Je souhaiterai éviter les "on error resume next" car j'ai du code qui suit (je prefere un  test à une generation d'erreur).
Pb 2/ Comment connaitre le plus grand TabIndex de facon à remettre le focus sur le premier controle
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Zylott Messages postés 104 Date d'inscription jeudi 25 juillet 2002 Statut Membre Dernière intervention 28 septembre 2006
9 juin 2006 à 14:45
Ta boule de crystal fonctionne bien , Jack...
J'ai fait le test (TypeOf...) et je n'emploi pas de "on error resume next"
Merci pour vos reponses
0
Zylott Messages postés 104 Date d'inscription jeudi 25 juillet 2002 Statut Membre Dernière intervention 28 septembre 2006
9 juin 2006 à 14:47
J'oubliais :

c'est juste que je me suis un peu enervé dessus car j'etais convaincu qu'on pouvait lister les proprietes (?) et je ne retrouvais pas.
Je crois que j'i confondu : on peut bien faire la liste des proprietes d'un champ d'une bdd (pourquoi pas sur un controle (?)...

Merci pour vos reponses
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
10 juin 2006 à 15:20
Salut,

Pb 1/ Certains controles n'ont pas la propriété TabIndex =>plantage.
Je souhaiterai éviter les "on error resume next" car j'ai du code qui suit (je prefere un test à une generation d'erreur).

ben il suffit de mettre On Error Resume Next avant le test
puis, à la reprise de ton code, On Error GoTo 0 (annule le On Error)


Pb 2/ Comment connaitre le plus grand TabIndex de facon à remettre le focus sur le premier controle

regarde dans la fenêtre des propriétés celui qui à le + grand
sinon, en VB, j'ai pas testé, mais en VBA, en cliquant droit sur la form, un menu te propose "ordre de tabulation", tu sauras quel control est en drenier

@++

--Mortalino--
Le Mystérieux Chevalier "Provençal, le Gaulois"
N'oubliez pas de lire le règlement !
0
Rejoignez-nous