Importantes novedades en rejilla y rejilla editableEl objeto más usado en nuestras aplicaciones para mostrar listas de datos es, sin duda, la rejilla. Por este motivo cualquier mejora que se produce en este objeto cobra vital importancia para nuestros desarrollos.En la versión 7.15 la rejilla ha recibido una profunda revisión donde la mayoría de las mejoras no tendrán una repercusión visual en la interfaz, pero sí las notarán los usuarios de nuestras aplicaciones cuando la usen o los desarrolladores cuando programen con el objeto. Las mejoras afectan tanto a la rejilla editable como en modo visualización. Vamos a repasar todos esos pequeños grandes detalles que nos ayudan en nuestro día a día:Edita el contenido de las columnas con el editor que prefierasHasta ahora, al definir una columna editable no podíamos asignar cómo se representa visualmente su editor, asumiendo un valor por defecto. A partir de esta versión podemos seguir dejando el editor por defecto o declarar en la propiedad “tipo editor cuerpo” cuál queremos que utilice el usuario, como vemos en la imagen.
Gracias a este nueva propiedad, nuestras rejillas editables ganan en usabilidad, funcionalidad, velocidad y estabilidad.Data catcher edit en rejillasEn esta versión ha aparecido un nuevo y potente control de edición llamado data catcher edit. Hemos incluido este control dentro de los que puedes seleccionar para usar en la edición de cualquier columna, añadiendo más funcionalidad en la edición de datos en rejilla.
Define el alto de las cabeceras de rejillaSi en la propiedad “alto de cabecera“ dejas el valor 0, se asume que la configuramos en modo automático y se creará con un alto de cabecera estándar preestablecido para el control. Si lo deseas, puedes aplicar el valor que te interese para hacerla más grande o pequeña, con el objetivo de ajustarla a tus intereses de interfaz, o incluso hacerla multilínea.
En la migración de versión la propiedad se pone a 0, es decir, en modo alto automático.Las rejillas ahora también tienen propiedad y señal “timer”Al igual que ocurre con otros objetos, ahora ya puedes declarar la propiedad “timer” en la rejilla y gestionar la señal para ejecutar manejadores de evento. Esto te permite programar automatismos directamente en la rejilla, tanto si está incrustada en un formulario con si está en modo vista.
Ya puedes usar el comando “interfaz: establecer foco” en columnasPuedes usar el comando de instrucción “interfaz: establecer foco” con las columnas de la rejilla, lo que te permite gestionar saltos del foco entre columnas en función de las condiciones de edición que desees.Nuevas señales de edición pre-aceptada y edición pre-canceladaEs en estas nuevas señales donde puedes utilizar el comando de instrucción “Set retorno proceso = NO” para evitar que se acepte o cancele la edición. También es en estas señales donde puedes utilizar el comando de instrucción “interfaz: obtener la ficha en edición de la rejilla” ya que en este punto la edición sigue activa. La señales edición aceptada y edición cancelada se ejecutan con posterioridad a que se acepte o cancele la edición.Las columnas de la rejilla editable emiten la señal “value changed”Esta nueva funcionalidad nos permite, de forma sencilla, gestionar cuándo el usuario ha modificado el valor de alguna de las columnas de la rejilla.Es funcional la variable EVENT_PARAMS para señales de ítemHemos incluido la actualización de valores de la variable EVENT_PARAMS para las señales item-activado, item-clicked, item-doble-clicked y itemSelChanged, devolviendo en el primer valor del array la línea de la rejilla en la que se produce el evento.Mejorando lo ya existenteAdemás de las novedades incluidas en esta versión de la rejilla y rejilla editable hemos realizado un notable esfuerzo en pulir todos esos pequeños o grandes detalles de este objeto para que te ayuden a crear mejores interfaces. A continuación te detallamos algunas de las correcciones y mejoras realizadas:
- Hemos revisado por completo el sistema de señales del objeto y sus subobjetos.
- En edición ”si se produce un error en el alta” ya no permanece una línea en blanco, evitando la necesidad de refrescar la rejilla.
- Se han resuelto los problemas que se producían en algunas rejillas editables que combinaban columnas editables con otras no editables, ahora ambos tipos de columnas se llevan bien durante la edición.
- Se han solucionado los problemas relacionados con las altas en rejilla editable.
- Se ha mejorado el uso de los iconos de tabla estática así como su combinación con texto en la misma columna.
- Se ha mejorado el uso de la tecla “Tab” en los controles que combinan ventana de edición y botones.
- Ahora en el editor de rejillas la función ancho de título (Alt+F7) calcula bien el ancho teniendo en cuenta que las cabeceras se ponen en negrita, y también lo hace correctamente con texto pequeños.
- La función setCurrentSelect(Int) de las clase VAbstractListDataView, pasándole un parámetro entero con la posición del registro, ya funciona correctamente.
- En la rejilla editable ahora se dispara correctamente la señal de edición aceptada si estando en edición hacemos clic con el ratón en una columna no editable, además ahora también se dispara correctamente si estando dentro de edicion se cambia el foco fuera de la rejilla, por ejemplo, haciendo click en otro control.
- Se ha subsanado la incidencia que producía que no se ejecutase el subproceso del comando "interfaz: obtener la ficha en edición de la rejilla" en un evento disparado con las señales edición aceptada y edición cancelada.
- En vDataClient al visualizar la rejilla de una tabla ya se muestran las columnas correspondientes a punteros singulares o hermanos, aunque estén en las últimas posiciones de la lista de campos.
- Subsanada la incidencia que producía que en una rejilla con totales de suma acumulada, con una columna que muestra un campo puntero a maestro, cuando hay registros que contienen códigos inexistentes en el maestro, la rejilla recalculaba constantemente totales. Ahora sólo se calculan los totales una vez.
- El pie de rejilla se ajusta correctamente cuando el pie activo es verdadero y con un modo de cabecera vertical, aunque cambie el ancho de la cabecera vertical.
- Subsanada la incidencia que producía que al ordenar o invertir orden en rejillas, la multiselección no se ordenaba, con lo que quedaban seleccionados otros registros de la lista.
- Mejorado el inspector de errores para que no rompa vDevelop al ejecutar el inspector de errores aunque haya una rejilla que tenga asignada una tabla que no existe y tenga declaradas columnas con campos de dicha tabla.
- Aunque en los eventos de pérdida de foco no es recomendable mostrar mensajes, hemos evitado que, si se hace, rompa vClient al hacerlo en una columna de rejilla en edición.
- Hemos conseguido evitar que se dispare la señal de pérdida de foco de la rejilla cada vez que una columna entra en edición.
- Y otras muchas pequeñas correcciones de menor importancia… siempre pensando en la estabilidad y velocidad.