Hola otra vez a todos,
Intento pasar una aplicación de VB6 a VB 2005 pero no se como es el código
equivalente.
Se trata de pasar de un control a otro pulsando intro, la tecla + o incluso
la flecha hacia adelante. En VB6 lo tengo funcionando sin problemas pero
ahora no funciona en VB 2005 Beta 2.
Saludos
Luc
Adjunto el código de por si alguna alma caritativa me hecha una mano:
'Declaraciones para la función PasaCampo
'-
Private Declare Function PostMessage Lib "user32" Alias "PostMessageA"
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam
As Long) As Long
Private Declare Function SetKeyboardState Lib "user32" (lppbKeyState As
Byte) As Long
Private Declare Function GetKeyboardState Lib "user32" (pbKeyState As Byte)
As Long
Const WM_KEYDOWN = &H100
Const VK_TAB = &H9
Const VK_SHIFT = &H10
Const VK_DELETE = &H2E
Const VK_BACK = &H8
Const VK_LEFT = &H25
Public Sub PasaCampo(ByVal CodigoKey As KeyCodeConstants, miControl As
Control)
Dim bTeclas(0 To 255) As Byte
Select Case CodigoKey
Case vbKeyReturn:
' Mandar mensaje de tabulador
PostMessage miControl.hwnd, WM_KEYDOWN, VK_TAB, 0
Case vbKeyAdd:
' Mandar mensaje de tabulador
PostMessage miControl.hwnd, WM_KEYDOWN, VK_TAB, 0
En los formularios para pasar de campo con las teclas que yo quiera, en
cualquier control puedo poner esto:
Private Sub Text_KeyDown(Index As Integer, KeyCode As Integer, Shift As
Integer)
Module1.PasaCampo KeyCode, Screen.ActiveControl
End Sub
Case vbKeyUp:
GetKeyboardState bTeclas(0)
' Simulación de la pulsación de la tecla SHIFT
bTeclas(VK_SHIFT) = True
SetKeyboardState bTeclas(0)
' Mandar mensaje de tabulador
PostMessage miControl.hwnd, WM_KEYDOWN, VK_TAB, 0
DoEvents
' Liberación de la tecla SHIFT
bTeclas(VK_SHIFT) = False
SetKeyboardState bTeclas(0)
Case vbKeyDown:
PostMessage miControl.hwnd, WM_KEYDOWN, VK_TAB, 0
Case vbKeyLeft:
'CodigoKey = 0
End Select
End Sub
Leer las respuestas