OVH Cloud OVH Cloud

Comment empêcher un retour chariot avec la touche entrée

14 réponses
Avatar
Christian
Bonjour,

Dans un contrôle texte je contrôle la touche entrée frappée par
l'utilisateur. Cela déclenche une procédure annexe. Seulement quoique je
fasse, le curseur passe à la ligne suivante. Comment faire pour que
l'utilisateur puisse repartir au début du contrôle et non pas une ligne vide
en dessous.

Christian.

10 réponses

1 2
Avatar
ng
Salut,

Essaye ceci :

Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then _
KeyAscii = 0
End Sub


--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

Christian wrote:
Bonjour,

Dans un contrôle texte je contrôle la touche entrée frappée par
l'utilisateur. Cela déclenche une procédure annexe. Seulement quoique
je fasse, le curseur passe à la ligne suivante. Comment faire pour que
l'utilisateur puisse repartir au début du contrôle et non pas une
ligne vide en dessous.

Christian.


Avatar
Quasimodo
Christian submitted this idea :
Bonjour,

Dans un contrôle texte je contrôle la touche entrée frappée par
l'utilisateur. Cela déclenche une procédure annexe. Seulement quoique je
fasse, le curseur passe à la ligne suivante. Comment faire pour que
l'utilisateur puisse repartir au début du contrôle et non pas une ligne vide
en dessous.

Christian.



bonjour,
il faut subclasser votre textbox, voici peut être un début de piste.
Exemple :
'--------------------------------------------------------------------------------------------------------------------------------
Option Explicit

Private Declare Function CallWindowProc Lib "user32" Alias
"CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long,
ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias
"SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal
dwNewLong As Long) As Long

Private Const GWL_WNDPROC = -4
Private Const WM_RBUTTONUP = &H205
Private Const WM_RBUTTONDOWN = &H204
Private Const WM_RBUTTONDBLCLK = &H206
Private Const WM_CUT = &H300
Private Const WM_COPY = &H301
Private Const WM_KEYFIRST = &H100
Private Const WM_KEYLAST = &H108
Private Const WM_KEYUP = &H101
Private Const WM_LBUTTONUP = &H202
Private Const WM_LBUTTONDOWN = &H201
Private Const WM_LBUTTONDBLCLK = &H203

Private Const WM_PASTE = &H302
Private Const WM_KEYDOWN = &H100
Private Const WM_CHAR = &H102

Private lngHWnd As Long
Private lpPrevWndProc As Long

Public Sub Hook(ByVal hWnd As Long)

lngHWnd = hWnd
lpPrevWndProc = SetWindowLong(lngHWnd, GWL_WNDPROC, AddressOf
WindowProc)

End Sub

Public Sub UnHook()

Dim lngReturnValue As Long

lngReturnValue = SetWindowLong(lngHWnd, GWL_WNDPROC, lpPrevWndProc)

End Sub

Function WindowProc(ByVal hw As Long, ByVal uMsg As Long, ByVal wParam
As Long, ByVal lParam As Long) As Long

Dim bReturnOld As Boolean

bReturnOld = True
Select Case uMsg
Case WM_PASTE
If Not IsNumeric(Clipboard.GetText) Then
WindowProc = 0
bReturnOld = False
End If
Case WM_CHAR
Select Case wParam
Case vbKeyBack 'Allow the use of backspace
Case vbKey0 To vbKey9 'Allow the use of numbers
Case 44, 46 'Allow dot and change comma into dot
Case Else
wParam = 0
End Select
End Select

If bReturnOld Then
WindowProc = CallWindowProc(lpPrevWndProc, hw, uMsg, wParam,
lParam)
End If

End Function

'--------------------------------------------------------------------------------------------------------------------------------

@+Quaz

--
This is an automatic signature of MesNews.
Site : http://mesnews.no-ip.com
Avatar
Quasimodo
Christian brought next idea :
Bonjour,

Dans un contrôle texte je contrôle la touche entrée frappée par
l'utilisateur. Cela déclenche une procédure annexe. Seulement quoique je
fasse, le curseur passe à la ligne suivante. Comment faire pour que
l'utilisateur puisse repartir au début du contrôle et non pas une ligne vide
en dessous.

Christian.



Bonjour,
je cherche à intégrer une liste déroulante à un datagrid.
L'exemple de microsoft me déplait de part le fait que je ne peux pas
affichier un autre champs que celui qui contient la donnée à affecter.
Dans la mesure du possible j'aimerais utiliser que des controls
standard de microsoft vb6.
Si quelqu'un à une bonne idée pour rentrenscrire élégamment une
relation 1,n : données de base dans un grid et une foreigne key vers
une table librairie, avec des controls standard.

@+ Quaz

--
This is an automatic signature of MesNews.
Site : http://mesnews.no-ip.com
Avatar
Christian
"ng" a écrit dans le message de news:

Salut,

Essaye ceci :

Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then _
KeyAscii = 0
End Sub



Merci. Effectivement c'était bête comme choux. D'autant que je l'avais fait
il y a quelque temps pour un autre truc...
Avatar
Gloops
Salut,

Est-ce qu'il ne suffit pas de mettre la propriété Multiline à False ?
Là le curseur n'ira pas à la ligne suivante, puisqu'il n'y en a pas.
________________________________________
Christian a écrit, le 21/10/2004 15:35 :

Bonjour,

Dans un contrôle texte je contrôle la touche entrée frappée par
l'utilisateur. Cela déclenche une procédure annexe. Seulement quoique je
fasse, le curseur passe à la ligne suivante. Comment faire pour que
l'utilisateur puisse repartir au début du contrôle et non pas une ligne vide
en dessous.

Christian.




Avatar
ng
Salut,

Oui mais peut être que notre ami à besoin de plusieurs lignes.

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

Gloops wrote:
Salut,

Est-ce qu'il ne suffit pas de mettre la propriété Multiline à False ?
Là le curseur n'ira pas à la ligne suivante, puisqu'il n'y en a pas.
________________________________________
Christian a écrit, le 21/10/2004 15:35 :

Bonjour,

Dans un contrôle texte je contrôle la touche entrée frappée par
l'utilisateur. Cela déclenche une procédure annexe. Seulement
quoique je fasse, le curseur passe à la ligne suivante. Comment
faire pour que l'utilisateur puisse repartir au début du contrôle et
non pas une ligne vide en dessous.

Christian.




Avatar
Gloops
Bon je veux bien, mais comment passe-t-on à la deuxième ligne, si on a
neutralisé la touche de retour curseur ? Avec la souris ?

A moins que ça soit un sketch de Devos ?
_________________________________
ng a écrit, le 24/10/2004 10:21 :
Salut,

Oui mais peut être que notre ami à besoin de plusieurs lignes.



Avatar
ng
ou avec les fleches

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

Gloops wrote:
Bon je veux bien, mais comment passe-t-on à la deuxième ligne, si on a
neutralisé la touche de retour curseur ? Avec la souris ?

A moins que ça soit un sketch de Devos ?
_________________________________
ng a écrit, le 24/10/2004 10:21 :
Salut,

Oui mais peut être que notre ami à besoin de plusieurs lignes.




Avatar
Gloops
On peut, oui ...
Il va vraiment faire ça, le gars ?
_________________________________
ng a écrit, le 24/10/2004 16:06 :
ou avec les fleches



Avatar
Jean-Marc
> ng a écrit, le 24/10/2004 16:06 :
> ou avec les fleches
>


"Gloops" a écrit dans le message de
news:417c4f2b$0$27024$
On peut, oui ...
Il va vraiment faire ça, le gars ?



Oui, parce que si il fait ça, le gars, il viole en un coup
à peu près tous les standards de présentation et
d'utilisation des touches dans un programme Windows
conforme!

Mais bon, il fait comme il veut, le gars :-)

--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."
1 2