Rejilla de sólo lectura


([N4] gontorre) #1

Buenas tardes,

Tengo el siguiente problema:

Tengo un formulario típico de cabeceras y líneas de detalle con una vista de datos que me muestra las líneas de un pedido. El formulario tiene dos modos, consulta y edición. De forma que un usuario puede ver el pedido, pero no modificarlo. Para esto tengo una variable EDICION que se controla según determinados permisos. Con la cabecera no tengo problema porque pongo las condiciones de activo EDICION=1 y listo.

El problema es con la vista de datos de las líneas de detalle. Si pongo la condición de activo EDICION=1, cuando estoy en modo consulta está deshabilitada la barra de scroll y si el pedido es muy largo no puedo ver las líneas de más abajo.

¿Se os ocurre alguna forma de dejar la rejilla deshabilitada pero sin deshabilitar la barra de scroll?

Un saludo

Gonzalo Torre


([N3] pacosatu) #2

Hola Gonzalo.

¡Buena pregunta!.
La rejilla por defecto es de solo lectura.
Eres tú el que determinas en tiempo de diseño si la rejilla es editable mediante la propiedad Rejilla Editable o asociando formularios de edición. El problema es que esto es estático en ejecución.

Así que en tiempo de ejecución tendrás que controlar los Eventos de edición de la Rejilla cuando la Rejilla es editable o controlar los Pre-Init de los formularios de edición asociados a la Rejilla. En ambos casos devuelve “Set retorno de proceso = No” para evitar la edición.

Pruébalo.
Saludos
Paco Satué


([N4] antonioosorio) #3

Hola.

Se me ocurre que puedes colocar 2 rejillas, una editable y la otra no, dependiendo del valor de la variable EDICION, muestras una u otra.

Un saludo,
Antonio Osorio


([N4] gontorre) #4

Buenos días

Antonio, lo de tener dos rejillas ya lo había probado y funciona bien, pero eso me obliga a duplicar ciertos procesos para que tengan en cuenta qué rejilla tengo activa en cada momento. La verdad es que me daba pereza hacerlo de esa manera, aunque se que así no tendría problemas.

Paco, en el caso de que la rejilla sea editable tampoco tengo problema porque condiciono la propiedad “Condición para editar cuerpo” de las columnas.

Cuando es una rejilla NO editable, no se como controlarlo en el pre-init de los formularios de edición. En esos formularios no tengo acceso a la variable EDICION de la rejilla, ¿o sí?

Gracias y un saludo

Gonzalo Torre


([N1] wikan) #5

De todas formas las medidas que tomes, “deberían” ser temporales.

De entrada la rejilla aún siendo inactiva debería ser por lo menos operativa en el uso con el scroll
A mi me pasa lo mismo con los edits que tienen un desplegable, les pones “Solo lectura” pero…si abres el desplegable les puedes cambia el valor, vaya gracia.


([N3] pacosatu) #6

Hola Gonzalo.

En los pre-init de los formularios de edición de la rejilla deberás usar la misma Función para calcular el valor de EDICION que usas en el formulario de la cabecera. De esta forma encapsulas la funcionalidad del control de Acceso en cada formulario y no dependes del estado de edición del formulario padre.

Otra forma es NO usar los formularios de edición en la Rejilla y controlar tú mismo los eventos Doble-Click e Insert, aunque esto dejaría de ser Life is Soft, pero por otro lado tienes tú todo el control.

Una pregunta sobre la rejilla editable
¿Dónde está la propiedad "Condición para editar cuerpo” de las columnas?
Yo solo veo un valor estático True o False.

Este problema tan básico e importante se debería de tratar en los cursos de Velneo y dar de una vez por todas una solución genérica para todos los desarrolladores.

Saludos
Paco Satué


([N3] pacosatu) #7

Hola Gonzalo.

Gracias por la información.
De todas formas es necesario poner esa condición en cada columna editable, ¡¡con lo fácil que hubiera sido poner también la condición de Edición a nivel de rejilla!! -->> poco Life is Soft.

Para evitar tener que escribir la condición n-veces, puedes controlar la edición de las Rejillas editables en un solo punto mediante el evento “Edicion iniciada” de la Rejilla. Con “Set retorno de proceso = NO” en el manejador de evento se cancela la edición de cualquier columna.

Saludos
Paco Satué