Zylott
Messages postés104Date d'inscriptionjeudi 25 juillet 2002StatutMembreDernière intervention28 septembre 2006
-
8 juin 2006 à 23:19
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 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.
cs_Jack
Messages postés14007Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201578 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)
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 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 !
Zylott
Messages postés104Date d'inscriptionjeudi 25 juillet 2002StatutMembreDernière intervention28 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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Zylott
Messages postés104Date d'inscriptionjeudi 25 juillet 2002StatutMembreDernière intervention28 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 (?)...
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 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 !