SoloCodigo

Programación General => Visual Basic 6.0 e inferiores => Mensaje iniciado por: vbguest en Domingo 15 de Junio de 2003, 18:57

Título: Re: como puedo navegar de un textbox a otro con las flechas
Publicado por: vbguest en Domingo 15 de Junio de 2003, 18:57
Saludos amigos solo quisiera saber como hago para navegar de un textbox a otro con las flechas de navegacion arriba,abajo,drecha,izquierda ya que solo lo hace con tab o con enter al incluir un pequeño codigo   ayudaaaaaaaaaaaa.:hitcomp:
Título: Re: como puedo navegar de un textbox a otro con las flechas
Publicado por: J.M.Movilla en Domingo 15 de Junio de 2003, 21:29
En el evento _KeyDown puedes definir la función que quieras para cada pulsación del teclado:  únicamente tienes que saber que la flecha a la izquierda es KeyCode = 37; la flecha arriba es KeyCode = 38; la flecha a la derecha es KeyCode = 39; y la flecha abajo es KeyCode = 40.

Así en el Text3_KeyDown puedes poner

If KeyCode = 13 or KeyCode = 40 then
   Text4.SetFocus
elseIf KeyCode = 38 then
   Text2.SetFocus
......
end If

Creo que está claro, ¿no?  Pues a tu disposición...
Título: Re: como puedo navegar de un textbox a otro con las flechas
Publicado por: vbguest en Lunes 16 de Junio de 2003, 15:45
muchas gracias pero tengo un formulario con alrededor de 40 campos de texto uno debajo del otro lo que quisiera es poder subir o bajar de campo con las flechas de navegacion abra una funcion o algo que pueda hacer para no repetir el mismo codigo por cada campo, gracias de antemano
Título: como puedo navegar de un textbox a otro con las flechas de n
Publicado por: J.M.Movilla en Lunes 16 de Junio de 2003, 23:39
A ver qué te parece esta solución:  en lugar de nominar a cada textbox con nombres diferentes, llámalos a todos igual modificando únicamente su índice (array de textboxes) y el evento _KeyDown le pones así:

Private Sub txt_KeyDown(Index As Integer, KeyCode As Integer, Shift As Integer)
    If KeyCode = 13 Or KeyCode = 40 Then
        If Index < 40 Then             ' Suponiendo que tengas 40 campos...
            txt(Index + 1).SetFocus
        Else
            CmdAceptar.SetFocus    ' Envías el foco al botón de Aceptar los cambios, por ejemplo...
        End If
    ElseIf KeyCode = 38 Then
        If Index > 0 Then
            txt(Index - 1).SetFocus
        End If
    End If
End Sub

De esta forma no tienes que controlar el evento nada más que en una sola subrutina.

Saludos