Déclencher un timer apres la saisie d'un text

Résolu
cs_snake57 Messages postés 204 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 1 novembre 2011 - 21 sept. 2006 à 23:35
cs_snake57 Messages postés 204 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 1 novembre 2011 - 22 sept. 2006 à 14:57
Bonjour,

Je voudrais surveiller un textbox. Des que l'utilisateur a fini d'écrire j'analyse le contenu du textbox et ensuite je l'éfface.
Le problème c'est que je ne sais pas comment faire pour déclencher un évènement sur la dernière lettre pressée. En utilisant les évènements text1_change, text1_keydown, text1_keypres ou text1_keyup c'est la première lettre qui est détecté et pas la dernière.

6 réponses

econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 24
22 sept. 2006 à 09:49
Salut,

Private Sub Text1_Change()
    ' On arrête le précédent Timer
    Timer1.Enabled = False
    ' Et on le relance
    '   Peut-être est-il utile de refaire un Timer1.Value = 0  ici  ... sait plus et pas pu tester
    Timer1.Enabled = True
End Sub

Ainsi, dès que tu as tapé un lettre, le timer se met en route, et il est interrompu et réinitialisé dès que tu retapes une nouvelle lettre.

Ensuite :

Private Sub Timer1_Timer()
    If Timer1.Value = 2000 Then
       ' Au bout de 2 secondes d'inactivité,
       sValeurEntree = Text1.Text
       '  faire quelque chose ... avec ce texte
       ' et l'effacer
       Text1.Text = ""
    End If
End Sub

Manu
--------------------------------------------------------------------------------------------
Avant de poster un message, n'oubliez pas de consulter le reglement.
3
Dolphin Boy Messages postés 630 Date d'inscription vendredi 5 mai 2006 Statut Membre Dernière intervention 17 février 2007
21 sept. 2006 à 23:48
Salut, le problème est : comment savoir si la lettre pressée est la dernière ?Essaie avec les évènements LostFocus ou Validate en prenant right$(text1.text,1) qui te donnera la dernière lettre de la saisie dans text1.
0
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
21 sept. 2006 à 23:51
Salut
Fin de saisie : C'est quoi ? une longueur prévue d'avance ou quand l'utilisateur sort du control ?
Si c'est lngr fixe, suffit de compter : Len(monTextBox.Text)
Si c'est quand il sort du control, suffit de faire ton test dans l'évènement monTextBox_Validate

Première lettre, dernière lettre : Avec si peu d'explication, difficile de t'aider !

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 la partage (Socrate)
0
cs_snake57 Messages postés 204 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 1 novembre 2011
22 sept. 2006 à 00:11
Non j'ai du mal m'expliquer...

En fait l'utilisateur ne fait qu'écrire dans le textbox. La longueur du texte est variable et il ne sort jamais du controle.
Il ne fait qu'écrire ce qu'il veux et lorsqu'il a fini il arrète d'écrire sans sortir du controle.
0

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

Posez votre question
Profil bloqué
22 sept. 2006 à 07:30
Bonjour
Essaie ceci
Le caractère de fin de saisie est le retour chariot dans ce cas ( touche Enter du clavier). Il faut bien que l'on sache quand l'utilisateur a terminé sa frappe.

Private sub Texte_Keypress (Keyascii as Integer)

If Keyascii <> 13 then Exit sub
' déclenchement du timer : texte.text contient les caractères frappés au clavier

GRENIER Alain[8D]
0
cs_snake57 Messages postés 204 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 1 novembre 2011
22 sept. 2006 à 14:57
Bonjour,


Merci Manu c'est exactement ça que je voulais faire.

                                                                                                              A plus
0
Rejoignez-nous