FoxPro/Visual FoxPro - Posicionarse en un GRID

   
Vista:

Posicionarse en un GRID

Hola a todos

Ultimamente me esta pasadno uan cosa cosas cuando estoy en un grid, me voy a un formulario y luego vuelvo al grid, les cuento.

Tengo un grid con 14 columnas, las columnas no caben en la pantalla , con lo cual para poder ver algunas columnas hay que desplazarse hacia la derecha mediante la barrra de desplazamiento lateral, y funciona sin problemas, pero lo que me pasa es que cuando estoy en el grid posicionado en la columna Nº 1, y me voy a otro formualrio, cuando vuelvo y me posiciono en el grid con setfocus, este aparece posicionado en la columna 13 por ejemplo apareciendo desplazado el grid, con lo cual para ver la primera columna tengo que moverme hacia la izquierda con la barra de desplazamiento.

He probado con activatecell(1,1), pero nada sigue sin funcionar bien.

Ha alguien le ha pasado algo parecido, como puedo hacer para que cuando vuelvo al grid, siempre aparezca posicionado en la Fila 1, columna 1 ??

o sabe la secuancia correcta por ejemplo, para posicionarme en la fila 1 , columna 1:

1ª thisform.mygrid.activatecell(1,1)
2º thisform.mygrid.setfocus
3º keyboard '{HOME}'

O seria otra secuencia ??

Gracias anticipadas, que esto me esta quemando la paciencia :) :) :) :)

Un saludo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Posicionarse en un GRID

Publicado por Fidel José (321 intervenciones) el 01/12/2015 14:30:09
En primer lugar te conviene examinar la necesidad de utilizar la propiedad LockColumns del grid.
Luego, para ir al primer registro del control:
select (thisform.grid1.recordsource)
go top
thisform.grid1.refresh

Para enfocar la columna 1 del grid, lo más fácil es intentar lo siguiente:
thisform.grid1.Columns(1).setfocus

Si quieres que te funcione cuando regresas al form desde otro form, puedes intentar poner las instrucciones en el Activate del form, con la precaución de tener en cuenta que el Activate se dispara después del Init, por lo que es bueno poner una bandera para evitar ese código cuando se instancia el formulario.
Por ejemplo, en el load del form iría algo así:
Addproperty(thisform,"EsInit",.T.)

En el Activate del form
IF !THIS.ESINIT AND NOT EMPTY(this.grid1.REcordSource)
SELECT (this.grid1.recordSource)
GO TOP
THIS.GRID1.REFRESH
THIS.GRID1.Columns(1).SETFOCUS()
ELSE
THIS.ESINIT = .F.
ENDIF
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar