FoxPro/Visual FoxPro - Controlar las celdas de un grid

   
Vista:
Imágen de perfil de Willy

Controlar las celdas de un grid

Publicado por Willy (259 intervenciones) el 18/09/2007 04:00:00
Hola a todos.

Tengo un problema con el grid1, y se trata de lo siguiente.

En un formulario coloqué un grid1 que hace referencia a una tabla2, donde utlizo para llenar datos, hasta ahi todo funciona bien, los datos se guardan y todo bien, pero, pero aqui hay un problema.
La tabla tiene 10 campos en los cuales un usuario llena algunos registros en la columna4, dejando ciertas celdas vacias, y lo registra así, luego otro dia debe llenar la columna5, mas las celdas vacias de la columna4, pero sin modificar los datos ya existentes.

He colocado esto:
IF EMPTY(ThisForm.Grid1.Column4.Text1.Value)
ThisForm.Grid1.Column4.Text1.Enabled= .T.
ELSE
ThisForm.Grid1.Column4.Text1.Enabled= .F

, pero compara solo la primera celda, o sea, si la primera celda esta vacia entonces toda la columna se activa, si la primera celda tiene datos entonces toda la columna se desactiva.

Como para activar o desactivar una celda según tenga o no un contenido en ella?.

Espero su ayuda gracias.
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:Controlar las celdas de un grid

Publicado por enrique (1041 intervenciones) el 18/09/2007 13:55:31
lo tenes que poner en el Text1 de la columna.
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:Controlar las celdas de un grid

Publicado por Willy (259 intervenciones) el 18/09/2007 14:00:07
Hola Enrique

No puedo colocar desde las propiedades del grid, solo desde programación, por que las columnas pueden varian de tipo de datos, de ancho, etc.

Lo que sugieres ya hice, en la anterior pregunta está como lo he utilizado, pero la respuesta de esa instrucción no es como pretendo.

Espero mas sugerencias,

gracias
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:Controlar las celdas de un grid

Publicado por neo (1601 intervenciones) el 18/09/2007 15:43:34
Y porqué deseas desactivar algunas celdas del grid??

El Text1 del Grid se refiere a todas las celdas segun la columna seleccionada, no existe una celda en especifico.

Suerte►
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:Controlar las celdas de un grid

Publicado por Willy (259 intervenciones) el 18/09/2007 16:50:54
Hola Neo
Quiero desactivar celdas que no tienen un dato dentro de ellas y quiero activar solo las celdas que esten vacias, para leer datos pero no modificar los ya existentes.

Ayuda por favor.
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:Controlar las celdas de un grid

Publicado por enrique (1041 intervenciones) el 18/09/2007 17:54:48
revisa en el help el evento When, recuerda siempre poner a nivel de Text1 del Column.

if empty(this.value)
return .t. && permito que entre a la celda
else
return .f. && impido el acceso
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

RE:Controlar las celdas de un grid

Publicado por Uriel (14 intervenciones) el 30/04/2008 18:42:42
Me sirvió esta respuesta kawn!
Saludos!!
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:Controlar las celdas de un grid

Publicado por neo (1601 intervenciones) el 18/09/2007 19:19:18
Otra duda,

Tienes varias filas relacionadas con algun datos, digamos clave o id??

es decir, que si lo que deseas modificar son de varias filas??

Saludos►
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:Controlar las celdas de un grid

Publicado por Willy (259 intervenciones) el 18/09/2007 20:23:50
Hola a todos.

Lo que sugiere Enrique:

if empty(this.value)
return .t. && permito que entre a la celda

fue lo primero que hice pero activa o desactiva toda la columna en base al contenido de primera celda y no deseo activar toda la cpolumna solo las celdas vacias

Utilicé también el método Active, también gotfocus, pero nada.

Pueden darme otras sugerencias?.

gracias.
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:Controlar las celdas de un grid

Publicado por neo (1601 intervenciones) el 19/09/2007 15:23:44
Todavía no has contestado a mi pregunta...
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:Controlar las celdas de un grid

Publicado por Willy (259 intervenciones) el 19/09/2007 19:46:10
Hola Neo.

1. Tienes varias filas relacionadas con algun datos, digamos clave o id??
Tengo un campo clave pero en la tabla no está como indice ni clave, pero puede servir como un identificador, pues no se repite en ningun lugar de la tabla.

2 es decir, que si lo que deseas modificar son de varias filas??
Se va a insertar datos en varias filas que estén vacias, si ya tienen un dato no debe ser modificado.

Gracias por contestar
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:Controlar las celdas de un grid

Publicado por jos (18 intervenciones) el 19/06/2015 04:16:59
Yo ingreso en un (grid relacionado a una tabla llamada series) con un lector de codigo de barras, pero no se como hacer que al ingresar una serie con el lector, autmaticamente la grilla abra un nuevo registro para escanear otra serie.

Ahorita lo he relaizado por colocando un boton "nuevo" pero si tengo 100 productos para ingresar la serie, hay soltar el lector de codigo de barras para coger el mouse y hacer click en nuevo.

Saludos espero puedan ayudarme.
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:Controlar las celdas de un grid

Publicado por Fidel José (558 intervenciones) el 19/06/2015 16:52:27
Para solucionar ese tema hay que ver varias cosas:
1) Si el scanner ataca el grid o tienes un form para el scanner
2) Si después de leer el codigo de barras haces otras tareas o solamente ingresas el código de barras
3) Versión de Visual Fox (por la posibilidad de implementar con BindEvent() )

Generalmente usas el LostFocus del textbox para dirigir la acción posterior. Y siempre debes pensar en términos del cursor asociado al grid.

Por ejemplo, si usas un form (llamado "frmScan") con un textbox para la entrada de scanner, en el LostFocus del textbox puedes tener algo así:
Cuando se carga el frmScan hay que pasarle como parámetro la referencia de objeto del grid:
POdría ser
Addproperty(thisform,"oScan",null)
DO FORM frmScan NAME thisform.oScan WITH Thisform.Grid1

En el init del frmScan tenés que tener:
LPARAMETERS toGrid
Addproperty(thisform,"objGrid",toGrid)

En el LostFocus de un textbox de frmScan
local lcCursor
lcCursor = thisform.objGrid.REcordSource
insert into (lcCursor) (barcode) values (this.value)
thisform.objGrid.Refresh
thisform.objGrid.Columns(2).Setfocus && esto para ingresar otros valores en el Grid
thisform.Hide() && oculta el frmScan

Para volver a mostrar el FrmScan desde el form de trabajo:
thisform.oScan.Show()

Si el scanner ataca directamente el grid (no me parece bueno) tendrás que crear un registro vacío antes de la lectura.
En cuanto a tener que hacer click con el ratón tienes varias soluciones:
1) Si el lanzador es un commandbutton, puedes dirigirle el foco con Thisform.cmdNuevo.SetFocus desde algún punto de la interfaz. Ahí el operador toca la tecla [Enter] y ya.
2) Alternativamente puedes utilizar el Keypress del form con una tecla de función. Dependiendo del entorno necesitarás establecer thisform.keypreview = .t. Los valores de las teclas los encontrás en la ayuda de la función INKEY().

.
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