Trucos Pasar a otro campo con Enter   (2 artículos )

Extraído de la Knowledge Base de Microsoft.

Se muestra cómo avanzar de campo con Enter y cómo retroceder con la flecha arriba.

En el formulario declararemos :
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

En el evento KeyDown del TextBox pondremos :
Dim bTeclas(0 To 255) As Byte
Select Case KeyCode
   Case vbKeyReturn:
      ' Mandar mensaje de tabulador
      PostMessage Text2.hwnd, WM_KEYDOWN, VK_TAB, 0
   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 Text2.hwnd, WM_KEYDOWN, VK_TAB, 0
      DoEvents
      ' Liberación de la tecla SHIFT
      bTeclas(VK_SHIFT) = False
      SetKeyboardState bTeclas(0)
End Select
KeyCode = 0

Y en el evento KeyPress del TextBox pondremos, para evitar el pitido :
If KeyAscii = vbKeyReturn Then KeyAscii = 0

Para que esto funcione no debe haber ningún botón con la propiedad Default a true.

Basado en el anterior artículo de la KB de Microsoft se adjunta una clase (con un ejemplo de uso) para que un textbox salte al siguiente control con Enter y al anterior con la flecha arriba.
Aunque la clase está echa para TextBox es muy sencillo cambiarla para otro tipo de control.
Su uso es muy sencillo.
Por cada TextBox que queramos que salte con el enter declaramos:
  dim variable as New cTextBoxConEnter

Y en el load del formulario :

variable.Init NombreDelTextBox





Download saltarconenter.zip  



Trucos Trucos

Visual Basic Página de Visual Basic

Página principal Página principal

www.jrubi.com