• Lunes 18 de Noviembre de 2024, 01:16

Autor Tema:  Re: ¿Cómo igualar la tecla Enter a Tab?  (Leído 4816 veces)

tas

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: ¿Cómo igualar la tecla Enter a Tab?
« en: Miércoles 5 de Febrero de 2003, 16:53 »
0
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.

José D

  • Miembro MUY activo
  • ***
  • Mensajes: 235
    • Ver Perfil
Re: ¿Cómo igualar la tecla Enter a Tab?
« Respuesta #1 en: Miércoles 5 de Febrero de 2003, 17:34 »
0
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.
Saludos

Jose Arriagada

  • Miembro MUY activo
  • ***
  • Mensajes: 373
    • Ver Perfil
Re: ¿Cómo igualar la tecla Enter a Tab?
« Respuesta #2 en: Miércoles 5 de Febrero de 2003, 22:52 »
0
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!!!!

tas

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: ¿Cómo igualar la tecla Enter a Tab?
« Respuesta #3 en: Jueves 6 de Febrero de 2003, 10:07 »
0
Muchas gracias a los dos, me habéis sido de mucha ayuda.:)

ernessan

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
¿Cómo igualar la tecla Enter a Tab?
« Respuesta #4 en: Jueves 6 de Febrero de 2003, 13:08 »
0
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