FoxPro/Visual FoxPro - Manipular el grid

   
Vista:
Imágen de perfil de ghfhgfhg

Manipular el grid

Publicado por ghfhgfhg (259 intervenciones) el 23/11/2007 13:13:09
Hola a todos.

Tengo un problema con un grid que debe mostrar datos de una tabla1 con los siguientes campos Codigo, Nombres, apellidos. . . . . y se trata de lo siguiente:

Capturo un código leído desde teclado, ya lo tengo en una variable.
Ahora debo mostrar la Tabla1 y el cursor justo en el registro que tenga el código leído, eso ya está he utilizado un Locate y todo lo demás, Pero si presiono flecha arriba o flecha abajo, o finalmente hago clic en otro registro, el cursor no debe ir a ubicarse en ningún otro registro, el puntero solo se queda en el registro seleccionado.
Como ya se ha localizado el registro, se puede cambiar el contenido de cualquier celda (campo), excepto del campo Codigo, o sea que el campo Codigo este Enabled=.F.

Como hago esto?.

Quise utilizar el KeyPress, pero el grid no cuenta con esta propiedad.

Espero su ayuda y de antemano muchas gracias por las respuestas
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

RE:Manipular el grid

Publicado por enrique (1041 intervenciones) el 23/11/2007 13:52:27
lo que yo haría es
1. copiar ese registro a una tabla auxiliar y luego mostras solo ese registro (con lo que te evitas el control sobre las flechas arriba y abajo)

2. en el objeto Column del Grig donde tenes el Codigo pone la propiedad Enabled = .F. (ej: Grid1.Column1.Enabled=.F.)

Espero te sirva

Enrique
Buenos Aires
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
Imágen de perfil de Willy

RE:Manipular el grid

Publicado por Willy (259 intervenciones) el 23/11/2007 18:52:04
Hola Enrique.
Gracias por la respuesta.
Lo que dices ya no habia probado, pero resulta que mi tabla tiene 9 campos y en el grid solo aparecen 7, para ello hice lo sigte.

SELECT * FROM Nombres WHERE Carrera=vCrr AND ElCurso==vCur AND Codigo=CodLeido INTO TABLE Alumno

En la tabla Alumno, viendo con BROWSE, se puede ver los 9 campos peroa ya en el grid solo se ven 7.

También utilize esto.
ThisForm.Grid1.RecordSourceType= 0
ThisForm.Grid1.RecordSource='Alumno'
ThisForm.Grid1.ColumnCount=9

pero sigue el grid con solo 7 campos, donde los campos 8 y 9 se ven vacios. Tendrá algo que ver que antes de realizar todo esto, necesariamente se observa una tabla con 7 campos en el mismo grid, aunque no creo, pues estoy volviendo a definir el grid para 9 columnas, y debería mostar las 9 columnas, no solo 7.

Espero tu ayuda. Gracias por todo.
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

RE:Manipular el grid

Publicado por enrique (1041 intervenciones) el 23/11/2007 19:27:02
en la primera vez que muestras el grid con 7 columnas, cada columna esta asociada a algun campo por el ControlSource?
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

RE:Manipular el grid

Publicado por geco (7 intervenciones) el 24/11/2007 17:12:07
Por que no pruebas esto:

cambia la propiedad [ readonly = .t. ] de las columnas a las que no quieras que se le cambien los datos.

Dejas el grid con la propiedad recordsoursetype = 1

antes de hacer tu select coloca:

grid.recordsourse = " "

Realizas tu select

grid.recordsourse = "tu_cursor"
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
Imágen de perfil de Willy

RE:Manipular el grid

Publicado por Willy (259 intervenciones) el 25/11/2007 02:53:43
Gracias a todos.

Ya solucione el problema.
para que muestre en el grid tuve que colocar un recordsource en cada columna especificando el nombre de latabla.campo. El código es largo pero funciona.

Gracias por todo.
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