Cosmos

Notas a la versión 7.2 y releases 1 y 2

NUEVA UTILIDAD INCLUIDA A PARTIR DE LA VERSIÓN 7.2

CosSignFile. La dll CosSignFile (cossigfile.dll) permite firmar digitalmente archivos en formato PDF, XML y binario, así como la firma de ficheros de factura electrónica XML en formato FacturaE versiones 3.2.1 y 3.2.2. (Versión en PDF)

Correcciones de la v. 7.2, rel. 2Ir al principio de la página

Correcciones

Runtime

Desarrollo

Implementaciones, mejoras y correcciones de la v. 7.2, rel. 1Ir al principio de la página

Implementaciones y mejoras

Clase JSON

Correcciones

Runtime

Implementaciones, mejoras y correcciones de la versión 7.2Ir al principio de la página

Implementaciones

Clase Array

Se ha aumentado el tamaño máximo de un Array, que ahora podrá ser de 2.147.483.647 elementos.

El tipo de los parámetros de los métodos Resize de la clase Array y Size de la clase Container pasan de Smallint a Integer.

Esta modificación hace que los programas compilados con versiones anteriores no puedan ejecutarse con esta versión. Es necesario recompilar las aplicaciones.

Clase Char

Se ha eliminado el límite de 32.767 bytes en objetos de la clase Char, estableciéndose ahora en 2.147.483.647 bytes. Para ello, se han modificado algunas de las funciones de la clase Char con objeto de poder manejar cadenas de caracteres con una longitud mayor de 32.767 bytes.

Operadores modificados a partir de esta versión:

Métodos modificados a partir de esta versión:

NOTA: La definición del tamaño inicial de un objeto Char seguirá siendo como máximo de 32.767 bytes. El tamaño del Char se podrá modificar en ejecución con los operadores de asignación y concatenación.

Este cambio en el tipo de dato de parámetros o de retorno de las funciones supone que los binarios son incompatibles.
Además, se deberá chequear el tipo de las variables de retorno, parámetros de las funciones y redefinición de los métodos indicados anteriormente.

Clase FormTable

Se han optimizado las consultas para el caso de las tablas de un FormTable asociado a un Grid. Para ello, se ha implementado la variable de entorno LOOKUPOUTERJOIN.

Si la variable de entorno está definida, en lugar de crear un cursor por cada Lookup se crea una sola frase con Outer Joins a las tablas de Lookup.

Clase Json

Se ha optimizado el algoritmo del método SaveToFile y el del Conversor a Char.

Controles

Band Group

Posibilidad de cambiar el tamaño de los controles hijos de las bandas de un control Band Group en ejecución antes de añadir la banda.

NOTA: Si se amplía el tamaño de algún control hijo de alguna de las bandas (control Box) habrá que ampliar también el tamaño de la banda si el ancho de ésta fuese menor, ya que éste no se amplía automáticamente.

Bitmap

Se ha implementado la propiedad Auto Fit en los controles Bitmap para que la imagen asociada al control no se deforme cuando se cambie el tamaño del control en ejecución.

Esta propiedad se ha implementado tanto para controles de la Screen como en los controles de la clase Page.

Drop Edit y Edit Field

Se ha implementado la posibilidad de que Cosmos recuerde la posición del cursor en los controles de edición para que, al acceder de nuevo al control, el cursor se sitúe en la misma posición (EDITFIELDNOMARKONGETFOCUS). Al regresar el foco al control el texto del campo no estará seleccionado.

Grid

A partir de esta versión es posible copiar el texto de los controles de tipos Drop List y Check (ALLOWCOPYCONTROLDATA). En el caso de los controles de tipo Check, los valores que se copiarán serán 0 ó 1 (0 si no está marcado el check y 1 si está marcado).

Se ha implementado la posibilidad de que el evento On Click, en los controles Grid, no se lance al hacer clic en la cabecera del Grid. Para ello habrá que definir la variable de entorno NOSENDCLICKONGRIDCLICKHEADER.

El método AlternateBackColor de la clase SimpleControl se podrá invocar desde los controles de tipo Grid, además de en los controles de tipo List Box.

Se han optimizado las consultas que se realizan desde Cosmos cuando un control Grid tiene asociada una tabla y algunos de los campos del Formtable son de tipo Lookup (LOOKUPOUTERJOIN).

List Box

Se podrá definir la altura en píxeles de las filas de una lista. El tamaño que se defina se aplicará a todas las filas de esa lista. Método SetListAllRowsHeight de la clase SimpleControl.

Posibilidad de desplazarse en las listas de izquierda a derecha con la rueda de ratón. Para ello, mantenga pulsada la tecla [Ctrl]+rueda del ratón.

Si una celda de una lista tiene asignado un estilo, su color de fondo será el definido en el estilo, independientemente de que la fila a la que pertenece tenga el foco.

A partir de esta versión se permite totalizar por columnas de tipo DATE y DATETIME.

Tab Control

Se ha implementado el evento RClickHeader.

NOTA. Si el evento está siendo utilizado como evento genérico, habrá que tener en cuenta que, a partir de esta versión, el código también se ejecutará al pulsar con el botón derecho del ratón sobre la pestaña del Tab Control.

Cosmos WebServer

Se ha implementado la variable de entorno CWSIGNOREMAIN para controlar si se debe o no ejecutar la función main del módulo que implementa el servicio REST que se está ejecutando.

Se ha implementado el método IsRunningInCosmosWebServer de la clase Module para consultar si la aplicación Cosmos se está ejecutando desde Cosmos WebServer.

Por defecto, siempre que se produzca un error y no se haya activado ningún código de HTTP con el método SetExecStatus de la clase Module, Cosmos activará el error 500 de HTTP.

Fichero de Log

La salida de los errores generados por el runtime de Cosmos WebServer durante los procesos podrá ser a fichero si en el directorio temporal se crea un fichero con el nombre CWSLog.log.

Cosmos WebServer como servicio
Si se produce un error durante la ejecución de un servicio Cosmos y el ErrorLevel es mayor de 0, en el fichero de log se volcará información referente al error, así como el método y el módulo donde se ha producido el error, y la pila de llamadas de la aplicación.

Si se produce un error durante la ejecución y el ErrorLevel es igual a 0, no se escribirá la información del error en el fichero de log.

Si en el código fuente del servicio Cosmos se ejecuta el método Trace, en el fichero de log se escribirá el texto asociado a dicho método.

Cosmos WebServer como aplicación interactiva
Si se produce un error durante la ejecución de un servicio Cosmos y el ErrorLevel es mayor de 0, en el fichero de log se volcará información referente al error, así como el método y el módulo donde se ha producido el error, y la pila de llamadas de la aplicación. Esta misma información se mostrará en pantalla mediante un MessageBox.

Si se produce un error durante la ejecución y el ErrorLevel es igual a 0, no se escribirá la información del error en el fichero de log y no se mostrará por pantalla.

Si en el código fuente del servicio Cosmos se ejecuta el método Trace, se mostrará por pantalla un MessageBox con el texto asociado al método Trace y no escribirá el texto en el fichero de log.

Estilo Visual Cosmos 7

A partir de esta versión se podrá cambiar en ejecución el estilo visual de una aplicación Cosmos. Los cambios que se pueden hacer son los siguientes:

No será necesario definir la sección [Custom Colors] en los ficheros de configuración utilizados por Cosmos como sucedía en la versión 7.0. De esta manera se podrán tener varios esquemas de colores para una misma aplicación Cosmos.

Para que cualquiera de los dos cambios sean efectivos habrá que llamar al nuevo método Refresh de la clase SimpleControl (este método se ha implementado en esta versión).

Eventos

Form

Se ha implementado el evento ChangeSize de la clase Form que permite conocer cuándo se ha cambiado, en tiempo de  ejecución, el tamaño de una ventana.

Drag & Drop

Se han implementado los métodos GetDragColumn y GetDropColumn que permiten conocer respectivamente, en los controles List Box, las columnas desde la que se ha arrastrado (drag) y sobre la que se ha soltado (drop) un elemento.

RClickHeader

Se ha implementado el evento RClickHeader para los controles de tipo Tab. Este evento se lanzará cuando el usuario pulse con el botón derecho del ratón sobre una pestaña del control.

Exportación a Excel

Además del formato de hoja de cálculo XML 2003 que soporta Cosmos al exportar a Excel, a partir de esta versión es posible exportar a Excel en formato XLSX.

Para que se generen con este nuevo formato, el nombre de los ficheros que se crean desde cualquiera de los métodos o utilidades de Cosmos deberán tener la extensión XLSX.

En los casos de los métodos que reciben el nombre del fichero como parámetro habrá que modificarlo. Estos métodos son los siguientes:

Si al generar el fichero está disponible la opción Save As habrá que elegir como Tipo de fichero Excel File (*.xlsx). Estos casos son:

  1. Sql-Interactive.
  2. Vista previa de los listados (Preview). Si en la opción Save As se selecciona como tipo Excel File (*.xlsx), además de exportar los datos a Excel en el nuevo formato, los exportará automáticamente en modo simple sin mostrar el siguiente elemento de diálogo:

Diálogo Tipo de exportación

Desde la ventana de output del entorno de desarrollo de Cosmos es posible exportar automáticamente los ficheros errores.xlsx (Build) y findinfiles.xlsx (Find in Files).

Iconos

Posibilidad de utilizar iconos con transparencias (alpha channel) en Cosmos. Se ha implementado para ficheros ICO y PNG.

Es necesario definir la variable USEALPHACHANNELICONS con valor YES o TRUE.

Listas editables

Además de utilizar la tecla [Return o Intro] para aceptar las modificaciones realizadas en una celda, a partir de esta versión se podrán emplear también las teclas de movimiento del cursor (variable de entorno LISTEDITACCEPTVALUEONARROWKEYS) o simplemente retirar el foco del control List Box o de la celda editada (variable de entorno LISTEDITACCEPTVALUEONLOSINGFOCUS).

Modo de edición automático

A partir de esta versión existe la posibilidad de añadir nuevos registros si está marcada la propiedad Allow Add.

Firma digital

La dll CosSignFile (cossigfile.dll) permite firmar digitalmente archivos en formato PDF, XML y binario, así como la firma de ficheros de factura electrónica XML en formato FacturaE versiones 3.2.1 y 3.2.2.

Para más información consulte las notas técnicas de la dll CosSignFile.

Vista previa en los listados

Exportación a Excel en formato XLSX.

Se ha implementado la posibilidad de guardar los valores del zoom utilizados en una vista previa, para lo cual se han definido la variable de entorno REMEMBERPREVIEWZOOM y los métodos GetLastPreviewZoom de las clases PrnDocument y Module, y SetLastPreviewZoom de la clase Module.

Mejoras

Nuevos métodos

Clase Char

LoadFromFile

Este método permite cargar el contenido de un fichero ASCII en una variable de tipo Char.

Clase Module

LoadCustomColors

Permite cargar, desde un fichero, una paleta de colores para personalizar los controles de la aplicación de Cosmos con estilo visual Cosmos 7.

NOTA: Para refrescar/repintar la ventana será necesario ejecutar el método Refresh.

GetLastPreviewZoom

Retorna el porcentaje de zoom con el que el usuario visualizó el último listado en la ventana de vista previa (métodos Preview y PreviewEx).

Independientemente del porcentaje de zoom que se haya asignado con el método SetLastPreviewZoom, si el usuario lo modifica en la ventana del Preview, el valor que retornará este método a partir de ese momento será el indicado por el usuario cuando se cerró la ventana.

Este método no necesita que esté definida la variable de entorno REMEMBERPREVIEWZOOM.

GetSystemTimeUTC

Retorna la hora actual UTC.

IsRunningInCosmosWebServer

Este método permite saber si la aplicación Cosmos se está ejecutando desde Cosmos WebServer.

SetLastPreviewZoom

Asigna un porcentaje de zoom para visualizar los listados de Cosmos en la ventana de vista previa (métodos Preview o PreviewEx).

Para que el funcionamiento de este método sea correcto la variable de entorno REMEMBERPREVIEWZOOM tiene que estar definida y su valor tiene que ser TRUE o YES.

NOTA: El uso conjunto de los métodos GetLastPreviewZoom y SetLastPreviewZoom y la variable de entorno REMEMBERPREVIEWZOOM permite, por ejemplo, almacenar el porcentaje de Preview en la configuración del usuario cuando finalice la aplicación y recuperarlo cuando ésta se vuelva a ejecutar.

Clase PrnDocument

GetLastPreviewZoom

Devuelve el porcentaje de zoom con el que el usuario visualizó el último listado en la ventana de vista previa (métodos Preview y PreviewEx).

No es necesario definir la variable de entorno REMEMBERPREVIEWZOOM.

Clase SimpleControl

GetDragColumn

En el mecanismo de drag&drop este método permite obtener la columna del control List Box desde la que se arrastró (drag) el elemento.

NOTA: Esta información se puede obtener igualmente con el método GetCurrentItem.

GetDropColumn

En el mecanismo drag&drop este método permite obtener la columna del control List Box sobre la que se soltó (drop) el elemento.

Refresh

Permite repintar el control de la clase Form.

Por ejemplo, después de llamar al método LoadCustomColors o modificar el valor de la variable COSMOSVISUALMODE será necesario ejecutar este método (Frame.Refresh).

SetListAllRowsHeight

Permite definir la altura en píxeles de las filas de un control List Box. La altura será la misma para todas las filas.

Nuevas propiedades y eventos

Propiedad Auto Fit

En los controles Bitmap la imagen se adapta al tamaño del control sin deformase.

Si el Form tiene marcada la propiedad Resizing,el control Bitmap la propiedadAuto Fit y el usuario modifica el tamaño de la ventana en ejecución, la imagen no se deformará, sino que se adaptará al tamaño del control.

También se ha implementado en la clase Page y en las plantillas (ficheros *.pag) que utilizan la dll prnpag32.

Propiedad VarLength

Se ha implementado la propiedad VarLength para controles Variable en listados de la clase Page y en listados con la prnpag32.dll.

  1. En clase Page.
    Al ejecutar el método GetProperty de la clase Control sobre un control de tipo "variable" de Page, retorna la longitud con la que se ha definido el control.
    Retorna el valor sobre una variable de tipo Smallint.

  2. En prnpag32.dll
    Al ejecutar la función getPropInt de la prnpag32.dll pasándole como parámetro el identificador de un control "variable" de un fichero PAG, retorna la longitud con la que se ha definido el control.

Evento ChangeSize

Evento de la clase Form que se lanza cuando se modifica el tamaño de la ventana de un Form en ejecución.

Variables de entorno

Si la variable está definida, Cosmos no hará caso del parámetro zoom del método PreviewEx de la clase PrnDocument.

Esta variable se puede definir en el fichero de configuración del proyecto, en el de Cosmos o con el método PutEnv de la clase Module. Su valor se podrá modificar durante la ejecución de la aplicación utilizando el método PutEnv.

Sus valores posibles son: TRUE o YES y FALSE o NO.

NOTA: Para obtener el valor del porcentaje de zoom se utiliza el método GetLastPreviewZoom de la clase PrnDocument.

Correcciones

En esta versión se han llevado a cabo correcciones en los siguientes componentes: