[Déplacé .Net -> VB6] Touche TAB, hyperterminal en VB6

Signaler
Messages postés
191
Date d'inscription
jeudi 7 janvier 2010
Statut
Membre
Dernière intervention
15 mai 2013
-
Messages postés
191
Date d'inscription
jeudi 7 janvier 2010
Statut
Membre
Dernière intervention
15 mai 2013
-
Bonjour a tous,

Je travaille sur un projet qui sert un peu d'hyperterminal en VB6 pour configurer des switchs.
J'ai un champs texte dans lequel j'envoie et je reçoit les commandes sur le commutateur.
Mon soucis est pour la touche tabulation, qui nous permet normalement, de voir les commandes disponibles, par exemple je tappe "sh" et tabulation, il doit écrire tout seul "show"
Evidemment quand je fais TAB, mon cruseur sort de la textbox et je ne vois rien.

Comment puis je faire ?

Merci

6 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
Salut
Oui, la touche Tab fait quitter le composant.
Pour intercepter cette touche ET ne pas sortir de la TextBox, il faut :
- Surveiller l'appui de la touche Tab dans KeyPress
- Monter une mémoire temporaire
- Dans le Validate de la TextBox (qui se produit quand on perd le focus), regarder l'état de cette mémoire pour annuler la sortie :
Option Explicit
Dim bPasSortir As Boolean
Private Sub Text1_KeyPress(KeyAscii As Integer)
    If KeyAscii = vbKeyTab Then
        bPasSortir = True
        ' Ici, Send Chr$(9) vers communication
        Text1.Text = Text1.Text & "<Touche Tab>"
    End If
End Sub
Private Sub Text1_Validate(Cancel As Boolean)
    If bPasSortir Then
        bPasSortir = False
        Cancel = True
    End If
End Sub

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)
Messages postés
191
Date d'inscription
jeudi 7 janvier 2010
Statut
Membre
Dernière intervention
15 mai 2013
1
Merci de ta réponse,

J'ai copié ton code tel quel en changeant bien sur les variables et en remplaçant :

' Ici, Send Chr$(9) vers communication

Par :

MSComm1.Output = Chr&(9) mais ça ne change rien.
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
Chr$
, pas &

Il est loin d'être évident que la tabulation soit interprétée par le destinataire de cette interface.
Je pense que la tabulation sous hyperterminal est gérée par hyperterminal : Il regarde les lettres déjà tapées et retrouve le mot clé complet.
A mon avis, c'est une fonctionnalité à créer.

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)
Messages postés
191
Date d'inscription
jeudi 7 janvier 2010
Statut
Membre
Dernière intervention
15 mai 2013
1
Oui je me suis rendu compte que j'avais mal recopier dans mon post, j'avais bien mis chr$(9) dans mon code.
Pourtant j'ai un projet en VB nommé VBTERM qui interprète bien la touche TAB dans le champ textbox et qui complète bien les commandes, et il n'y a apparemment pas de fonction supplémentaires pour ça.
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
Bizarre.
Alors regarde dans ce projet comment c'est fait, tu auras ta solution.
Si c'est la machine en face qui renvoie le complément du texte manquant, il faut donc attendre une réponse à un envoie de vbTab : tu as regardé si la machine répondait ?
Messages postés
191
Date d'inscription
jeudi 7 janvier 2010
Statut
Membre
Dernière intervention
15 mai 2013
1
J'ai essayé 40 000 fois lol de comprendre et de recopier même ce code, mais je ne comprend pas, pourquoi dans leur code la touche TAB reste dans le champ texte et renvoi la syntaxe.

J'avais réussi à garder la tabulation dans la zone de texte, mais elle envoyer juste une tabulation (4 espaces) dans la zone de texte, et n'interprétait pas la réponse.