Pasar Enter en vez de Tab

-=Aldo=-
27 de Mayo del 2005
Estoy actualizando un sistema terminado. Ahora me presentan esta situacion: En vez de pasar de un control a otro solo mediante la tecla TAB, quiero hacerlo tambien desde Enter. La cuestion es que si, puedo hacerlo detectando el evento del pulsacion y hacer un setfocus al siguiente control. La cuestion es que con un proyecto que tiene 60 form, y hacer eso por cada control me llevaria mas tiempo que hacer el proyecto de nuevo no?
Mi pregunta es, a alguien se le ocurre una forma de automatizar eso? o sea que a nivel de form, si se presiona enter (aun si un control tiene el foco), pase al siguiente control...Espero su ayuda, y desde ya gracias

welfo
27 de Mayo del 2005
Mejor intenta con esto, bye

Private Sub Form_KeyPress(KeyAscii As Integer)
If KeyAscii = vbKeyReturn Then
SendKeys "{TAB}"
KeyAscii = 0
End If
End Sub

Guido
27 de Mayo del 2005
lo que puedes hacer es capturar el keypress, y si este es la tecla enter enviar con senkeys la tecla tab

Aldo
27 de Mayo del 2005
si, pero eso tendria que codificar el evento keypress de cada control, y seria lo mismo, pues lo que tengo que evitar es codificar cada control. y hacerlo nada mas que a nivel de formulario, o sea hacer una codificacion por cada formulario.
Ah alguien me puede explicar la propiedad keypreview del form? tal vez ahi este mi respuesta pero no lo estoy entendiendo aun...

(¯`·.¸¸.·´¯¤_¤¯`·.¸¸.·´¯)
27 de Mayo del 2005
Tal vez eso te ayude, me paso algo parecido. Funciona con flechas también solamente los TabIndex deben segur un correlativo.

1ro. Se declara primero en Formulario:

Dim KeyAscii As Integer
Dim buffer As Integer

Se agrega un Control Timer
Y en la propiedad Interval = 140

Private Sub Timer1_Timer()
Dim intAscii
For intAscii = 1 To 255
buffer = 0
buffer = GetAsyncKeyState(intAscii)
If buffer <> 0 Then
KeyAscii = intAscii
' LblKeLog.Caption = KeyAscii
If KeyAscii = 40 Or KeyAscii = 13 Then ' "Flecha Abajo o ENTER"
KeyAscii = 0
SendKeys "{TAB}"
Exit For
End If

If KeyAscii = 38 Then ' "Flecha Arriba"
KeyAscii = 0
SendKeys "+{TAB}"
Exit For
End If

End If
DoEvents
Next
End Sub


===================================´

Y en un modulo se declara
Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer

====================================

Listo en que el usuario pulse ENTER va al próximo control y si pulsa la flecha hacía arriba va al anterior, si ingresas en un lisxbox puedes deshabilitar el Timer para que no pierda el foco, con un “Label” (LblKeLog.Caption) puedes ver todas la teclas que se pulsan el formulario, recuerda deshabilitarlo (el Timer) si el programa pierde el foco porque afecta a otros programas