SoloCodigo
Programación General => Visual Basic 6.0 e inferiores => Mensaje iniciado por: tas en Miércoles 5 de Febrero de 2003, 16:53
-
Hola, agradecería que alguien me dijera cómo puedo hacer que en un formulario, al pulsar la tecla Enter, ocurra lo que al pulsar la tecla Tab, es decir se desplaze el foco al siguiente control con el tab activo. Gracias.
-
Estoy seguro que hay mejores soluciones, pero ahorita sólo se me ocurre esta:
Si la cantidad de TextBox es enorme, de todas formas se corta y pega y eso debería servir para el siguiente código:
En el evento KeyPress de cada TextBox puedes colocarle algo como esto:
Ej: KeyPress del Text1.Text
If Keyascii = 13 Then
Text2.SetFocus
end if
Ej: KeyPress del Text2.Text
If Keyascii = 13 Then
Text3.SetFocus
end if
Ej: KeyPress del Text3.Text
If Keyascii = 13 Then
Text4.SetFocus
end if
Y así sucesivamente, solo copia y pega y le cambias el numero, si los TextBox tienen nombres como TxtNombre, entonces claro se le cambia el nombre, eso sirve, no sé si hacer algo asi pero en algun evento del Form se aplica igual, porque lo mencionado es para cada evento KeyPress de cada TextBox.
Saludos.:)
LA RESPUESTA DEL SEÑOR JOSÉ ARRIAGADA QUE ESTÁ AQUÍ ABAJO SIN DUDA ALGUNA ES MEJOR, YA PENSABA QUE HABÍA ALGO QUE SI ES MÁS ELEGANTE Y EFECTIVO, Y MÁS PEQUEÑO.
-
Para no tener que pegar el codigo ...
IF KEYASCII=13 THEN
.....
en todas los TEXT, has lo siguiente:
En la propiedad KEYPRESS del form ponle TRUE. e inserta este codigo:
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case vbKeyDown, vbKeyReturn
KeyCode = 0
SendKeys "{Tab}" 'Esta funcion mueve el foco al siguiente control cuando se pulsa Return o la Flecha hacia abajo
Case vbKeyUp
KeyCode = 0
SendKeys "+{Tab}" 'Mueve el foco al control anterior al pulsar la tecla fecha arriba
End Select
End Sub
Pruebalo!!!!
-
Muchas gracias a los dos, me habéis sido de mucha ayuda.:)
-
te envio una funcion que lo hace, en cada formulario llamante debes tener la propiedad keypreview a true
***en la funcion hay ciertos controles que quiza no entiendas, (son unos ocx propios y unos de Sheridan) , no te preocupes funciona igual
Public Sub PRCgIntroPress(iKeyascii As Integer)
'************************************************
'* Rutina que simula la tabulacion al pulsar *
'* ENTER para ciertos controles *
'* Requisitos: *
'* "Keypreview" en el formulario igual a True.*
'************************************************
Select Case iKeyascii
Case 13 'intro
' Aqui se determina el tipo de control en
' los cuales funciona el avance con la tecla
' INTRO.
Select Case TypeName(Screen.ActiveForm.ActiveControl)
Case "TextBox", "OptionButton", "MaskEdBox", "CheckBox"
SendKeys "{TAB}"
Case "txt", "SSDBCommand" 'para este caso no hay que hacer nada porque ya lo hace
Case "SSOleDBCombo"
If Screen.ActiveForm.ActiveControl.DroppedDown Then
Exit Sub
Else
SendKeys "{TAB}"
iKeyascii = 0
End If
End Select
Case 27 'escape
iKeyascii = 0
Unload Screen.ActiveForm
Case Else
If TypeName(Screen.ActiveForm.ActiveControl) Like "SS*DBCombo" Then
If Chr(iKeyascii) Like "#" Or UCase(Chr(iKeyascii)) Like "[A-Z]" Then
SendKeys "%{DOWN}" 'alt + DOwn
End If
End If
End Select
End Sub