30 de mayo de 2016

Desplazarse verticalmente en un Grid con la tecla Enter

Algunos usuarios de mis aplicaciones me plantean la posibilidad de desplazarse verticalmente en un Grid con la tecla Enter y que sea solo en la(s) columna(s) a editar.

Si existe esa posibilidad en VFP6 o en VFP8 no la he encontrado e hice lo siguiente:


Figura 1

Suponiendo que el control Grid se nombre Grid1.

  •  En el Evento Gotfocus de Grid1.Column1.Text1 teclear:
Thisform.Grid1.Column3.Text1.SetFocus
  •  En el Evento GotFocus de Grid1.Column2.Text1 teclear:
Thisform.Grid1.Column3.Text1.Setfocus 
  • En el Evento KeyPress de Grid1.Column3.Text1 teclear:
IF NkeyCode = 13
  SKIP
  Thisform.Grid1.Refresh
ENDIF

Y con esos 3 pasos nos moveremos hacia abajo en el control Grid con la tecla Enter.

Si las columnas a editar fueran mas de una, entonces el paso 1 se repite en las columnas informativas, pero con la diferencia que el SetFocus iría dirigido a la primera columna a editar.


Figura 2.

  • En el Evento Gotfocus de Grid1.Column1.Text1 teclear:
Thisform.Grid1.Column3.Text1.SetFocus 
  • En el Evento GotFocus de Grid1.Column2.Text1 teclear:
Thisform.Grid1.Column3.Text1.Setfocus 
  • En el Evento KeyPress de Grid1.Column4.Text1 teclear:
IF NkeyCode = 13
  SKIP
  Thisform.Grid1.Refresh
ENDIF

Ojo : Para evitar que las columnas se desplacen fuera de foco a la izquierda cuando se presiona la tecla Enter, el ancho del Grid debe ser un poco mayor que el ancho de todas las columnas.

Disculpen si me extendí en la explicación, la programación es mucho mas pequeña de lo que parece. Tengo otros truquitos más, posteriormente se los entregaré.

Saludos.

José David González Cardonell

2 comentarios :

  1. Basta con cambiarle la funcion al enter y que en lugar de ir horizontal se fuera vertical. Como si presionara la flecha hacia abajo.

    ResponderEliminar
  2. Basta con cambiarle la funcion al enter y que en lugar de ir horizontal se fuera vertical. Como si presionara la flecha hacia abajo.

    ResponderEliminar