Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Gloops
Bonjour,
Et pourquoi pas TextBox.Text = TextBox.Text + "A" ?
Si c'est à l'intérieur du texte, que se trouve la sélection et qu'il faut insérer le A, s'intéresser aux propriétés SelLength, SelStart, SelText. L'aide expliquera ça bien mieux que moi.
Les simulations de touches, c'est quand vraiment on ne peut pas autrement. ___________________________________ Curl a écrit, le 12/10/2004 17:12 :
Bonjour,
Je me bats toujours avec des simples textbox..
Sur un Textbox et son évenement Textbox_KeyDown, J'intercepte l'appui sur la fleche droite (keycode = vbKeyRight)
Je voudrais alors insérer un "A" , j'écris donc call Textbox_Keypress(Asc("A"))
Je rentre bien dans Keypress avec la bonne valeur de Keyascii , mais à la sortie (du Keypress ou du KeyDown), je n'ai pas de caractère affiché ..
J'ai tenté avec _KeyUp sans succès (subtil le gascon .)
Pourquoi ? et quelle est la façon correcte de procéder .
Je vous remercie pour vos conseils. Pierre.
Bonjour,
Et pourquoi pas TextBox.Text = TextBox.Text + "A" ?
Si c'est à l'intérieur du texte, que se trouve la sélection et qu'il
faut insérer le A, s'intéresser aux propriétés SelLength, SelStart,
SelText. L'aide expliquera ça bien mieux que moi.
Les simulations de touches, c'est quand vraiment on ne peut pas autrement.
___________________________________
Curl a écrit, le 12/10/2004 17:12 :
Bonjour,
Je me bats toujours avec des simples textbox..
Sur un Textbox et son évenement Textbox_KeyDown, J'intercepte l'appui
sur la fleche droite (keycode = vbKeyRight)
Je voudrais alors insérer un "A" , j'écris donc
call Textbox_Keypress(Asc("A"))
Je rentre bien dans Keypress avec la bonne valeur de Keyascii , mais à
la sortie (du Keypress ou du KeyDown), je n'ai pas de caractère
affiché ..
J'ai tenté avec _KeyUp sans succès (subtil le gascon .)
Pourquoi ? et quelle est la façon correcte de procéder .
Et pourquoi pas TextBox.Text = TextBox.Text + "A" ?
Si c'est à l'intérieur du texte, que se trouve la sélection et qu'il faut insérer le A, s'intéresser aux propriétés SelLength, SelStart, SelText. L'aide expliquera ça bien mieux que moi.
Les simulations de touches, c'est quand vraiment on ne peut pas autrement. ___________________________________ Curl a écrit, le 12/10/2004 17:12 :
Bonjour,
Je me bats toujours avec des simples textbox..
Sur un Textbox et son évenement Textbox_KeyDown, J'intercepte l'appui sur la fleche droite (keycode = vbKeyRight)
Je voudrais alors insérer un "A" , j'écris donc call Textbox_Keypress(Asc("A"))
Je rentre bien dans Keypress avec la bonne valeur de Keyascii , mais à la sortie (du Keypress ou du KeyDown), je n'ai pas de caractère affiché ..
J'ai tenté avec _KeyUp sans succès (subtil le gascon .)
Pourquoi ? et quelle est la façon correcte de procéder .
Je vous remercie pour vos conseils. Pierre.
Curl
Gloops a tapoté : | Et pourquoi pas TextBox.Text = TextBox.Text + "A" ?
Bonjour, et merci de votre réponse.. J'avais envoyé un post d'annulation, .. Mais je ne sais pas si celui-ci est pris en compte. ..
Gloops <gloops@niark.fr> a tapoté :
| Et pourquoi pas TextBox.Text = TextBox.Text + "A" ?
Bonjour, et merci de votre réponse..
J'avais envoyé un post d'annulation, .. Mais je ne sais pas si
celui-ci est pris en compte.
..
Gloops a tapoté : | Et pourquoi pas TextBox.Text = TextBox.Text + "A" ?
Bonjour, et merci de votre réponse.. J'avais envoyé un post d'annulation, .. Mais je ne sais pas si celui-ci est pris en compte. ..
Curl
Bonjour,
Je ne sais pas si mes questions ont leur place sur ce forum, ou si je devrais plutot les poser sur un site consacré à VB et à la programmation.
J'ai un tableau de 3 texbox de 6 caractères max chacun, représentant une "touche" (physiquement existante sur un périphérique). il est possible d'éditer le nom de cette touche. Voici la disposition sous VB ****** < textbox(0) ****** < textbox(1) ****** < textbox(2)
Je cherche à me déplacer à l'aide des flèches dans ces textbox. - Fleche gauche, remonte à la textbox précédente si curseur au debut de ligne. OK - Fleche droite passe à la textbox suivante si curseur en fin de ligne. OK Et - Fleche haut passe à la textbox précédente - Fleche bas passe à la textbox suivante.
Ces deux dernières "commandes" , ne fonctionnent pas.. j'ai bien l'évenement Texbox_gotfocus généré mais sur le mauvais textbox..
Voici le code :
Private Sub Text1_GotFocus(Index As Integer) Debug.Print Index End Sub
Private Sub Text1_KeyDown(Index As Integer, KeyCode As Integer, Shift As Integer) ' Used to intercept special keys Dim curpos As Integer
curpos = Text1(Index).SelStart Select Case KeyCode Case vbKeyRight If (curpos + 1) = Text1(Index).MaxLength Then ' Next Cells If Index Mod 3 = 2 Then Exit Sub ' Can't go lower Text1(Index + 1).SetFocus Text1(Index + 1).SelStart = 0 End If Case vbKeyLeft If curpos = 0 Then If Index Mod 3 = 0 Then Exit Sub 'Can't go higher Text1(Index - 1).SetFocus Text1(Index - 1).SelStart = Text1(Index - 1).MaxLength End If Case vbKeyDown If Index Mod 3 = 2 Then Exit Sub ' Can't go lower Text1(Index + 1).SetFocus Text1(Index + 1).SelStart = curpos Case vbKeyUp If Index Mod 3 = 0 Then Exit Sub 'Can't go higher Text1(Index - 1).SetFocus Text1(Index - 1).SelStart = curpos End Select
End Sub
Pourquoi ??
Merci pour vos conseils.
Bonjour,
Je ne sais pas si mes questions ont leur place sur ce forum, ou si je
devrais plutot les poser sur un site consacré à VB et à la
programmation.
J'ai un tableau de 3 texbox de 6 caractères max chacun, représentant
une "touche" (physiquement existante sur un périphérique). il est
possible d'éditer le nom de cette touche.
Voici la disposition sous VB
****** < textbox(0)
****** < textbox(1)
****** < textbox(2)
Je cherche à me déplacer à l'aide des flèches dans ces textbox.
- Fleche gauche, remonte à la textbox précédente si curseur au debut
de ligne. OK
- Fleche droite passe à la textbox suivante si curseur en fin de
ligne. OK
Et
- Fleche haut passe à la textbox précédente
- Fleche bas passe à la textbox suivante.
Ces deux dernières "commandes" , ne fonctionnent pas.. j'ai bien
l'évenement Texbox_gotfocus généré mais sur le mauvais textbox..
Voici le code :
Private Sub Text1_GotFocus(Index As Integer)
Debug.Print Index
End Sub
Private Sub Text1_KeyDown(Index As Integer, KeyCode As Integer, Shift
As Integer)
' Used to intercept special keys
Dim curpos As Integer
curpos = Text1(Index).SelStart
Select Case KeyCode
Case vbKeyRight
If (curpos + 1) = Text1(Index).MaxLength Then ' Next Cells
If Index Mod 3 = 2 Then Exit Sub ' Can't go
lower
Text1(Index + 1).SetFocus
Text1(Index + 1).SelStart = 0
End If
Case vbKeyLeft
If curpos = 0 Then
If Index Mod 3 = 0 Then Exit Sub 'Can't go higher
Text1(Index - 1).SetFocus
Text1(Index - 1).SelStart = Text1(Index - 1).MaxLength
End If
Case vbKeyDown
If Index Mod 3 = 2 Then Exit Sub ' Can't go lower
Text1(Index + 1).SetFocus
Text1(Index + 1).SelStart = curpos
Case vbKeyUp
If Index Mod 3 = 0 Then Exit Sub 'Can't go higher
Text1(Index - 1).SetFocus
Text1(Index - 1).SelStart = curpos
End Select
Je ne sais pas si mes questions ont leur place sur ce forum, ou si je devrais plutot les poser sur un site consacré à VB et à la programmation.
J'ai un tableau de 3 texbox de 6 caractères max chacun, représentant une "touche" (physiquement existante sur un périphérique). il est possible d'éditer le nom de cette touche. Voici la disposition sous VB ****** < textbox(0) ****** < textbox(1) ****** < textbox(2)
Je cherche à me déplacer à l'aide des flèches dans ces textbox. - Fleche gauche, remonte à la textbox précédente si curseur au debut de ligne. OK - Fleche droite passe à la textbox suivante si curseur en fin de ligne. OK Et - Fleche haut passe à la textbox précédente - Fleche bas passe à la textbox suivante.
Ces deux dernières "commandes" , ne fonctionnent pas.. j'ai bien l'évenement Texbox_gotfocus généré mais sur le mauvais textbox..
Voici le code :
Private Sub Text1_GotFocus(Index As Integer) Debug.Print Index End Sub
Private Sub Text1_KeyDown(Index As Integer, KeyCode As Integer, Shift As Integer) ' Used to intercept special keys Dim curpos As Integer
curpos = Text1(Index).SelStart Select Case KeyCode Case vbKeyRight If (curpos + 1) = Text1(Index).MaxLength Then ' Next Cells If Index Mod 3 = 2 Then Exit Sub ' Can't go lower Text1(Index + 1).SetFocus Text1(Index + 1).SelStart = 0 End If Case vbKeyLeft If curpos = 0 Then If Index Mod 3 = 0 Then Exit Sub 'Can't go higher Text1(Index - 1).SetFocus Text1(Index - 1).SelStart = Text1(Index - 1).MaxLength End If Case vbKeyDown If Index Mod 3 = 2 Then Exit Sub ' Can't go lower Text1(Index + 1).SetFocus Text1(Index + 1).SelStart = curpos Case vbKeyUp If Index Mod 3 = 0 Then Exit Sub 'Can't go higher Text1(Index - 1).SetFocus Text1(Index - 1).SelStart = curpos End Select
End Sub
Pourquoi ??
Merci pour vos conseils.
Curl
Curl a tapoté : | - Fleche haut passe à la textbox précédente | - Fleche bas passe à la textbox suivante. | | Ces deux dernières "commandes" , ne fonctionnent pas.. j'ai bien | l'évenement Texbox_gotfocus généré mais sur le mauvais textbox..
Petite précision, cela fonctionne sur l'événement Text1_Keyup (pas exactement ce que je voudrais avoir) mais pas sur _KeyDown.
Curl <Mr.Bilou@microsoft.fr> a tapoté :
| - Fleche haut passe à la textbox précédente
| - Fleche bas passe à la textbox suivante.
|
| Ces deux dernières "commandes" , ne fonctionnent pas.. j'ai bien
| l'évenement Texbox_gotfocus généré mais sur le mauvais textbox..
Petite précision, cela fonctionne sur l'événement Text1_Keyup (pas
exactement ce que je voudrais avoir) mais pas sur _KeyDown.
Curl a tapoté : | - Fleche haut passe à la textbox précédente | - Fleche bas passe à la textbox suivante. | | Ces deux dernières "commandes" , ne fonctionnent pas.. j'ai bien | l'évenement Texbox_gotfocus généré mais sur le mauvais textbox..
Petite précision, cela fonctionne sur l'événement Text1_Keyup (pas exactement ce que je voudrais avoir) mais pas sur _KeyDown.
Gloops
Bonjour,
J'ai l'impression que ça pourrait aider d'expliquer ce test : > If Index Mod 3 = 2 Then Exit Sub ' Can't go lower
Je trouve que si on n'est pas plongé dans le projet ça n'est pas si intuitif que ça. ___________________________________ Curl a écrit, le 13/10/2004 11:11 :
Case vbKeyDown If Index Mod 3 = 2 Then Exit Sub ' Can't go lower Text1(Index + 1).SetFocus Text1(Index + 1).SelStart = curpos Case vbKeyUp If Index Mod 3 = 0 Then Exit Sub 'Can't go higher Text1(Index - 1).SetFocus Text1(Index - 1).SelStart = curpos End Select
Bonjour,
J'ai l'impression que ça pourrait aider d'expliquer ce test :
> If Index Mod 3 = 2 Then Exit Sub ' Can't go lower
Je trouve que si on n'est pas plongé dans le projet ça n'est pas si
intuitif que ça.
___________________________________
Curl a écrit, le 13/10/2004 11:11 :
Case vbKeyDown
If Index Mod 3 = 2 Then Exit Sub ' Can't go lower
Text1(Index + 1).SetFocus
Text1(Index + 1).SelStart = curpos
Case vbKeyUp
If Index Mod 3 = 0 Then Exit Sub 'Can't go higher
Text1(Index - 1).SetFocus
Text1(Index - 1).SelStart = curpos
End Select
J'ai l'impression que ça pourrait aider d'expliquer ce test : > If Index Mod 3 = 2 Then Exit Sub ' Can't go lower
Je trouve que si on n'est pas plongé dans le projet ça n'est pas si intuitif que ça. ___________________________________ Curl a écrit, le 13/10/2004 11:11 :
Case vbKeyDown If Index Mod 3 = 2 Then Exit Sub ' Can't go lower Text1(Index + 1).SetFocus Text1(Index + 1).SelStart = curpos Case vbKeyUp If Index Mod 3 = 0 Then Exit Sub 'Can't go higher Text1(Index - 1).SetFocus Text1(Index - 1).SelStart = curpos End Select
Curl
Gloops a tapoté : | Bonjour,
Bonjour merci d'avoir jeté un oeil !! :o) Finalement, j'ai résolu mon problème, mais ai tellement remanié le code depuis... Je ne m'occupe plus de Keycode = vbkeyup et keycode = vbkeydown dans l'evenement _keydown, mais dans l'enevement _keyup
| J'ai l'impression que ça pourrait aider d'expliquer ce test : | > If Index Mod 3 = 2 Then Exit Sub ' Can't go lower
Pour répondre à cette question : Il ya en fait 24 touches de la façon suivante ****** représentant Text1 de 6 caractères max ****** ****** ****** ****** ****** ****** etc.. ****** ****** ******
Le test me permet de savoir si je suis sur la première ligne d'une touche (Index mod 3 =0) ou la dernière ligne d'une touche (Index mod 3 = 2), Dans ces deux cas, je ne gère pas le déplacement du curseur. (pour ne pas passer à la touche d'à coté)
En tout cas en revenant en arrière .. le problème reste... Voici le pourquoi du comment : Par exemple je me trouve sur la ligne 1 d'une touche ****** <- je me trouve ici (Index = 0) ****** ******
Je mets un point d'arret sur la ligne suivante :
| Case vbKeyDown | If Index Mod 3 = 2 Then Exit Sub ' Can't go lower | Text1(Index + 1).SetFocus (<----) | Text1(Index + 1).SelStart = curpos
Je change bien le focus, donc passe bien à la ligne suivante Focus sur Text1(1) ****** ****** <- je me trouve maintenant ici ******
Mais une fois sorti de l'evenement _Keydown , la textbox "réagit" sur la touche flèche bas, et le focus est replacé sur la première ligne
****** <- je me retrouve de nouveau ici ****** ******
Je devrais m'en sortir en ajoutant apres le .selstart, une valeur (nulle ?) à Keycode, pour que la textbox ne réagisse pas. Un peu comme si je mettais keyascii = 0 pour empecher l'ecriture d'une lettre dans le textbox à l'evenement Keypress (Suis-je clair ?)
Evidemment .. n'étant pas plongé dans le code, je me doute que cela reste un peu confus.. j'aurai du faire un mini-projet et le mettre en ligne cela aurait été plus clair.
En tout cas Merci de m'avoir lu et répondu !!
Gloops <gloops@niark.fr> a tapoté :
| Bonjour,
Bonjour
merci d'avoir jeté un oeil !! :o)
Finalement, j'ai résolu mon problème, mais ai tellement remanié le
code depuis...
Je ne m'occupe plus de Keycode = vbkeyup et keycode = vbkeydown dans
l'evenement _keydown, mais dans l'enevement _keyup
| J'ai l'impression que ça pourrait aider d'expliquer ce test :
| > If Index Mod 3 = 2 Then Exit Sub ' Can't go lower
Pour répondre à cette question : Il ya en fait 24 touches de la façon
suivante ****** représentant Text1 de 6 caractères max
****** ****** ******
****** ****** ****** etc..
****** ****** ******
Le test me permet de savoir si je suis sur la première ligne d'une
touche (Index mod 3 =0) ou la dernière ligne d'une touche (Index mod 3
= 2), Dans ces deux cas, je ne gère pas le déplacement du curseur.
(pour ne pas passer à la touche d'à coté)
En tout cas en revenant en arrière .. le problème reste...
Voici le pourquoi du comment : Par exemple je me trouve sur la ligne
1 d'une touche
****** <- je me trouve ici (Index = 0)
******
******
Je mets un point d'arret sur la ligne suivante :
| Case vbKeyDown
| If Index Mod 3 = 2 Then Exit Sub ' Can't go lower
| Text1(Index + 1).SetFocus (<----)
| Text1(Index + 1).SelStart = curpos
Je change bien le focus, donc passe bien à la ligne suivante Focus
sur Text1(1)
******
****** <- je me trouve maintenant ici
******
Mais une fois sorti de l'evenement _Keydown ,
la textbox "réagit" sur la touche flèche bas, et le focus est replacé
sur la première ligne
****** <- je me retrouve de nouveau ici
******
******
Je devrais m'en sortir en ajoutant apres le .selstart, une valeur
(nulle ?) à Keycode, pour que la textbox ne réagisse pas.
Un peu comme si je mettais keyascii = 0 pour empecher l'ecriture d'une
lettre dans le textbox à l'evenement Keypress (Suis-je clair ?)
Evidemment .. n'étant pas plongé dans le code, je me doute que cela
reste un peu confus..
j'aurai du faire un mini-projet et le mettre en ligne cela aurait été
plus clair.
Bonjour merci d'avoir jeté un oeil !! :o) Finalement, j'ai résolu mon problème, mais ai tellement remanié le code depuis... Je ne m'occupe plus de Keycode = vbkeyup et keycode = vbkeydown dans l'evenement _keydown, mais dans l'enevement _keyup
| J'ai l'impression que ça pourrait aider d'expliquer ce test : | > If Index Mod 3 = 2 Then Exit Sub ' Can't go lower
Pour répondre à cette question : Il ya en fait 24 touches de la façon suivante ****** représentant Text1 de 6 caractères max ****** ****** ****** ****** ****** ****** etc.. ****** ****** ******
Le test me permet de savoir si je suis sur la première ligne d'une touche (Index mod 3 =0) ou la dernière ligne d'une touche (Index mod 3 = 2), Dans ces deux cas, je ne gère pas le déplacement du curseur. (pour ne pas passer à la touche d'à coté)
En tout cas en revenant en arrière .. le problème reste... Voici le pourquoi du comment : Par exemple je me trouve sur la ligne 1 d'une touche ****** <- je me trouve ici (Index = 0) ****** ******
Je mets un point d'arret sur la ligne suivante :
| Case vbKeyDown | If Index Mod 3 = 2 Then Exit Sub ' Can't go lower | Text1(Index + 1).SetFocus (<----) | Text1(Index + 1).SelStart = curpos
Je change bien le focus, donc passe bien à la ligne suivante Focus sur Text1(1) ****** ****** <- je me trouve maintenant ici ******
Mais une fois sorti de l'evenement _Keydown , la textbox "réagit" sur la touche flèche bas, et le focus est replacé sur la première ligne
****** <- je me retrouve de nouveau ici ****** ******
Je devrais m'en sortir en ajoutant apres le .selstart, une valeur (nulle ?) à Keycode, pour que la textbox ne réagisse pas. Un peu comme si je mettais keyascii = 0 pour empecher l'ecriture d'une lettre dans le textbox à l'evenement Keypress (Suis-je clair ?)
Evidemment .. n'étant pas plongé dans le code, je me doute que cela reste un peu confus.. j'aurai du faire un mini-projet et le mettre en ligne cela aurait été plus clair.
En tout cas Merci de m'avoir lu et répondu !!
Gloops
Bon, si j'ai bien compris, chaque touche est interprétée de trois façons différentes selon l'état du clavier (en fait selon la valeur d'une variable j'imagine).
Si j'ai bien compris aussi, maintenant ça marche, tant mieux.
(j'ai lu en diagonale, hein)
Bon, si j'ai bien compris, chaque touche est interprétée de trois façons
différentes selon l'état du clavier (en fait selon la valeur d'une
variable j'imagine).
Si j'ai bien compris aussi, maintenant ça marche, tant mieux.
Bon, si j'ai bien compris, chaque touche est interprétée de trois façons différentes selon l'état du clavier (en fait selon la valeur d'une variable j'imagine).
Si j'ai bien compris aussi, maintenant ça marche, tant mieux.