ASCII

PFourrey Messages postés 15 Date d'inscription mardi 22 février 2005 Statut Membre Dernière intervention 7 juillet 2005 - 22 févr. 2005 à 22:46
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 - 24 févr. 2005 à 18:18
Bonjour à toutes et à tous.
Je débute sur Visual Basic et j'ai fais une petite calculatrice.
Mais j'aimerai pouvoir directement entrer les chiffres grace à mon clavier numérique et je dois pour cela me servir du code ACSII. Alors j'ai bien écris quelques choses du genre :

Public Sub Ascii(Ascii As String)
If (KeyAscii < 48 Or KeyAscii > 57) And (KeyAscii <> 8 Or KeyAscii = 46) Then
a = KeyAscii
mémoire = mémoire & a
Affiche.Text = mémoire
Else
End If
End Sub

Mais cela ne marche pas./
quelqu'un pourrait il m'aider.
Merci d'avance.
Patrick

9 réponses

Neow26 Messages postés 50 Date d'inscription mercredi 19 mars 2003 Statut Membre Dernière intervention 12 mai 2007
22 févr. 2005 à 23:06
Je pense que ta sub est bonne ou a peu près je m'y suis pas plus penché que çà, mais en fait ce qu'il te faut faire c'est mettre la propriété KeyPreview à True sur ta form et ensuite sur l'évenement KeyPress de ta form, tu appelles ta sub, avec le code Ascii de l'événement (paramètre KeyAscii il me semble)

Je suis à ton écoute si çà marche pas ^^
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
23 févr. 2005 à 00:08
Private Sub Text1_KeyPress(Key As Integer)
Dim K As Integer
Dim x As Integer K Key: Key 0
Select Case K
Case 8:
x = Text1.SelStart
If x > 0 Then
Text1 = Left$(Text1, x - 1) & Mid$(Text1, x + 1)
Text1.SelStart = x - 1
End If
Case 48 To 57:
x = Text1.SelStart
Text1 = Left$(Text1, x) & Chr$(K) & Mid$(Text1, x + 1)
Text1.SelStart = x + 1
Case 13: 'fin de saisie
Case Else: Beep
End Select
End Sub

Daniel
0
PFourrey Messages postés 15 Date d'inscription mardi 22 février 2005 Statut Membre Dernière intervention 7 juillet 2005
23 févr. 2005 à 22:19
Bonjour Daniel, tout d'abord, j'ai essayé d'inclure ta routine dans mon programme mais cela ne fonctionne pas.
Alors que faire, y-at-il un parametre que je dois changer et lesquel ???
De plus si tu peux me décrire un peux ta routine que je puisse la comprendre car ... malheureusement je débute.
Merci quand meme de t'etre penché sur mon probleme et tu reponds bien sur si tu as du temps.
A +
Patrick
0
PFourrey Messages postés 15 Date d'inscription mardi 22 février 2005 Statut Membre Dernière intervention 7 juillet 2005
23 févr. 2005 à 22:25
Bonjour, j'ai bien fait tout ce que tu m'as dis mais malheureusement, cela ne fonctionne pas.
Donc si tu as quelques mn pour regarder ce probleme.
Merci d'avance.
Patrick
0

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

Posez votre question
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
23 févr. 2005 à 22:43
pourtant c'est une simple TextBox qui permet de saisir que des chiffres numériques, la virgule ou le point décimal n'est pas pris en compte, il faut mettre le nom de ta TextBox au lieu de Text1, faire attention parce que j'ai changé le nom du paramètre KeyAscii, supprimer les autres évênements KeyDown et KeyUp s'ils existent. le KeyPreview à True n'est pas nécessaire.

Private Sub Affiche_KeyPress(Key<STRIKE>Ascii</STRIKE> As Integer)
- - - - - - - - - -
End Sub

Daniel
0
PFourrey Messages postés 15 Date d'inscription mardi 22 février 2005 Statut Membre Dernière intervention 7 juillet 2005
23 févr. 2005 à 23:20
Excuse moi Daniel, mais la tu vas vraiment t'ennerver.
Alors pour pas faire d'imper.
Jai ree un autre texte box nommé text1 comme sur ta procedure, et meme là cela ne fonctionne pas.
Peux tu verifier de ton cote et me dire si oui ou non ca fonctionne chez toi.
Bonne soiree qu'en meme et merci de ton aide.
Patrick
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
23 févr. 2005 à 23:27
qu'est ce qui marche pas ? est-ce que le TextBox a le focus ? est-ce que les chiffres s'inscrivent dans le TextBox ? rien que les chiffres de 0 à 9 sinon ça fait un Beep.
autre question est-ce que tu as VB ou VB.net ?

Daniel
0
PFourrey Messages postés 15 Date d'inscription mardi 22 février 2005 Statut Membre Dernière intervention 7 juillet 2005
24 févr. 2005 à 18:03
Bonsoir Daniel...
Méa Culpa, en effet je n'avais pas mis le focus dans le textbox ce qui ne pouvait pas marcher.
Mais, voilà ne peut-on pas simplifier un peu ton code, par ex en remplacant :

x = affiche1.SelStart
affiche1 = Left$(affiche1, x) & Chr$(K) & Mid$(affiche1, x + 1)
affiche1.SelStart = x + 1

par
mémoire = mémoire & keyASCII
Affiche1.Text = mémoire
si bien sur on a déclarer KeyASCII à la place de Key

Car j'ai du mal à comprendre ton code :
Chr$(K) tu rajoute le carctere à affiche. Ok, mais Mid$
et pourquoi ensuite tu rajoute 1 à ton compteur x ???

Si tu peux eclairer un peu ma lanterne, mais j'essayerai sinon ce soir en modifiant les parametres.
Merci encore pour tout en esperant que je ne t'ai pas trop ennervé.
Patrick
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
24 févr. 2005 à 18:18
quand ton curseur est à la fin d'accord tu rajoutes bien ton caractère à la fin.
mais quand ton curseur n'est pas à la fin, il faut bien mettre le caractère à l'endroit où se trouve le curseur, donc:
début de la chaîne (avant curseur) + le caractère + fin de la chaîne après curseur.
la postition du curseur est donné par Affiche.SelStart qui va de zéro jusqu'à la fin du texte. quand on tape un caractère, la position augmente de une position, d'où le +1.
attention si tu travailles sur une zone intermédiaire, tu vas perdre des cas, par exemple effacement arrière (code 46), qui n'est pas gérer ici mais par VB.

Daniel
0
Rejoignez-nous