Errores en la grilla

Hla. Experto, quiero, una vez más hacerte una nueva consulta, esta vez es referida a la grilla, yo coonfiguro la misma, tanto el diseño del grid, la visibilidad de las columnas, el ancho de las columnas, el caption y el readonly de las columnas en el INIT del formulario; en algunos casos (es decir algunos formularios) me pasa que me no me muestra columnas a las cuales en el INIT del FORM las pongo como visible, en otro caso me pasa que al iniciar un FORM me MUESTRA columnas que en el INIT las había OCULTADO a la visibilidad, luego cierro el mismo y vuelvo a abrirlo y recién RESPETA lo que configure en INIT(es decir no me muestra la columna que yo oculte).
Otro de mis inconvenientes con la GRILLA es por ejemplo en el INIT pongo el RECORDSOURCE : c_empleados (cursor creado a partir de la relación entre tablas ), tiene 8 campos.
Cuando configuro cuales columnas serán visibles y cuales no voy de column1. Visible = .f., column2. Visible:.t... Column8. Visible:.f., al ejecutar el form me sale "No se encuentra column7" o "No se encuentra column8", cuando el cursor que mencione tiene 8 campos.
Bueno eso y entre otros mínimos errores que me da la GRILLA, espero que una vez más me puedas dar una mano.
Respuesta
1
Sí, ya veo. Lo que sucede (o al menos eso creo) es que los "Grid" se enlazan automáticamente con la tabla que está activa, si es que hay una. Y eso se hace antes de que se ejecute el evento "Init" del formulario. Entonces, si el "Grid" se enlazó por ejemplo a una tabla con 3 columnas, al momento que tu lo re-enlazas con tu cursor que podría tener 10, el "Grid" no vuelve a regenerar sus columnas, y por lo tanto sólo se mostrarán las 3 que ya se habían creado. Me parece que por ahí deben estar todos los problemas que mencionas.
Para solucionarlos, basta con que, antes de que re-enlaces un "Grid" dinámicamente con una tabla o cursor, siempre establezcas su propiedad "ColumnCount" a -1 (que es el valor predeterminado). Eso hará que el "Grid" elimine todas sus columnas y configuraciones de cada columna, lo cual provoca que al volver a enlazarlo mediante la propiedad "RecordSource" con otra tabla, se vuelvan a generar los campos necesarios.
** Evento "Init" del formulario
ThisForm.Grid.ColumnCount = -1
ThisForm.Grid.RecordSource = "c_empleados"
Eso debe funcionar. Haz la prueba si no, me avisas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas