cs_lacourge
Messages postés21Date d'inscriptionmardi 12 avril 2005StatutMembreDernière intervention27 mars 2007
-
22 avril 2005 à 23:17
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 2015
-
23 avril 2005 à 01:34
bonjour, je suis débutant, voici mon pb : j'ai plusieurs textbox avec
passage auto du focus si elles ont le nombre de caractères.Ca marche
sauf qu'a chaque démarrage, mon focus se met n'importe ou suivant le
remplissage des textboxs. Je souhaiterai désactiver la fonction
len dans la partie Form_Activate
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 23 avril 2005 à 01:34
Re
Je comprends mieux
-1- Au lieu de mettre ton code dans Form_Activate, pourquoi ne pas le mettre dans Form_Load ? Il ne sera exécuté qu'une fois, au chargement de la forme. Mets simplement ceci dedans : txtDate(1).SetFocus
-2- Pour changer de TextBox quand la longueur du texte arrive à 5 : Pouah le SendKeys !
C'est pas propre.
Comme tu as indexé tes TexBox, il suffit de donner le focus au TextBox qui a l'index "Index + 1", c'est tout : TextBox(Index + 1).SetFocus
Il faudra juste penser à gérer le cas où tu te trouves sur le dernier TextBox (avec UBound(TextBox), tu peux connaitre le nombre d'index dans ta 'collection')
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 23 avril 2005 à 00:03
Salut
Tu nous parle de particularité de ton code qu'on ne connait pas.
Va falloir donner un bout de code pour qu'on sache ce qu'il y a dans ton Form_Activate !
et ... expliquer un peu mieux ton problème, il peut, peut-être, se résoudre simplement par des propriétés ...
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
cs_lacourge
Messages postés21Date d'inscriptionmardi 12 avril 2005StatutMembreDernière intervention27 mars 2007 23 avril 2005 à 00:43
toutes mes excuses pour ce manque de clarté (c'est mon premier programme en vb)
voici une partie de mon code:
Public PremierChargement As Boolean
Private Sub Form_Activate()
Dim Index As Integer
If PremierChargement And txtDate(0) "" And txtDes(0) "" Then
txtDate(0).SetFocus
PremierChargement = False
End If
If PremierChargement And txtDate(0) <> "" And txtDes(0) <> "" And txtDes(1) = "" Then
txtDate(1).SetFocus
PremierChargement = False
End If
etc...
les utilisateurs écrivent dans les cases. A chaque lancement, le
programme va lire dans un fichier .dat, recopie dans les cases et les
utilisateurs peuvent continuer à remplir les cases suivantes (en fait,
juste pour cela, j'aurais du utiliser un tableau, après, il y a
d'autres fonctions...)
jusque là, au démarrage, mon focus se mettait au bon endroit sauf depuis que j'ai rajouté:
Private Sub txtDate_Change(Index As Integer)
If Len(txtDate(Index).Text) = 5 Then 'passage auto du focus à la case suivante
SendKeys "{Tab}"
End If
End Sub
suivant le nombre de caracteres dans les txtDate, il se met "plus loin"
voilà, j'espère avoir été plus précis, désolé d'avoir été un peu long