Novedades en 4D v17

Este documento es una compilación de todas las funcionalidades disponibles en 4D v17, que se introdujeron durante el programa R-release v16 o en el último paso de 4D v16 R6 a 4D v17. Tenga en cuenta que cada funcionalidad tiene una publicación de blog relacionada que lo guiará a través de ejemplos concretos. Se puede acceder a estas publicaciones  haciendo clic en el título de la funcionalidad.

Tenga en cuenta también que las secciones con la etiqueta  están relacionadas con todas las funcionalidades nuevas lanzadas entre 4D v16 R6 y 4D v17.

Este documento está dividido en siete secciones:

 

ORDA 

4D v17 presenta un concepto innovador que le permite manejar su base de datos con un enfoque orientado a objetos: ORDA (Object Relational Data Access).

Estas son las funcionalidades que vienen con esta versión:

Crear, actualizar y eliminar datos

Con ORDA, las operaciones CRUD (Crear, Leer, Actualizar y Eliminar) se pueden realizar en su base a través de una capa de abstracción: el datastore, que es un objeto que ofrece una interfaz al modelo de base de datos y datos a través de objetos. Con ORDA, las operaciones Crear, Actualizar y Eliminar no se realizan en una selección actual o en un registro actual, sino en entidades:

  • Crear: se puede lograr instanciando una entidad nueva con el método new() y luego guardándola con el método save().
  • Actualizar: realizada en una entidad utilizando el mismo método save().
  • Eliminar: realizado en una entidad o en una selección de entidades utilizando el método drop() .

Leer la documentación

 

Consulte la base de datos

Con ORDA, el datastore es un objeto que ofrece una interfaz para el modelo de base de datos y datos a través de objetos. Además, ya no maneja la selección actual para cada tabla y registro actual, sino entidades que son objetos. Puede consultar fácilmente varias tablas vinculadas, gestionar relaciones recursivas en una misma tabla, así como también utilizar varios operadores lógicos en una sola consulta. 4D v17 ofrece varias formas de permitirle consultar su dataClass (es decir, tabla): puede buscar con una sola cadena, o pasar la cadena de búsqueda y los valores por separado utilizando marcadores de posición, otra opción es pasar los valores por separado utilizando una colección construida dinámicamente. Leer documentación

 

Yendo y viniendo de la selección actual a ORDA

ORDA se puede integrar con su código existente! ¡Es posible actualizar la selección actual de una tabla a partir de una selección de entidades así como también obtener una selección de entidades a partir de la selección actual de una tabla. Se agregaron nuevos comandos para este propósito: comando USE ENTITY SELECTION para actualizar la selección actual en la tabla correspondiente, y el comando Create entity selection para obtener una selección de entidades a partir de la DataClass correspondiente. Leer la documentación

 

Convertir a entidades, objetos y colecciones

Con ORDA, puede separar entidades y selecciones de entidades de la base de datos para trabajar con ellas por separado. Además, puede mover objetos y colecciones existentes a la base de datos. Entonces, para exportar una entidad a un objeto, use el método toObject(); y el método toCollection() en caso de que quiera exportar una selección de entidades a la colección. E importar una selección de entidades a través de un objeto se puede hacer gracias al método fromColletion(). Leer la documentación

 

Manejo de bloqueos

Bloqueo optimista 

ORDA le permite trabajar con bloqueo optimista al ofrecer un conjunto completo de métodos para manejar los errores que pueden surgir mientras se guarda una entidad en la base. El proceso es muy sencillo: después de volver a cargar la entidad desde la base con el método reload(), el método touchedAttributes()  le permite saber qué propiedades se han modificado desde la última vez que cargó o guardó, y finalmente puede comparar las dos entidades utilizando el método diff()Leer documentación

Bloqueo pesimista 

Además del bloqueo optimista, ORDA también le permite trabajar con bloqueo pesimista utilizando el método lock()  que bloquea una entidad, de manera que al guardar una referencia en esta entidad en otros procesos fallará hasta que la entidad esté desbloqueada. Por lo tanto, a partir de ahora no es necesario verificar si una entidad está bloqueada antes de cargarla, ya que al intentar actualizarla, el método save() devolverá un estado detallado que indica los motivos de bloqueo. Leer documentación

 

Manejar entidades en la selección de entidades

ORDA ofrece métodos simples para crear y agregar selecciones de entidades, así como métodos para navegar a través de entidades en un objeto selecciones de entidades, lo que le permitirá manejar varias selecciones de entidades al mismo tiempo y navegar a través de ellas de manera independiente. Se crea una selección de entidades utilizando el método newSelection(), y se le agregan entidades con el método add(). Una selección de entidades ofrece los métodos first() y last() para obtener la primera y la última entidad, y una entidad ofrece previous()next() para obtener la entidad anterior y la siguiente. Leer documentación

 

Operaciones lógicas en selecciones de entidades

Los operadores lógicos se pueden utilizar en las selecciones de entidades, lo que le permite obtener la intersección, unión o diferencia entre dos selecciones de entidades como con conjuntos en el lenguaje clásico. Leer documentación

 

Cálculo en selecciones de entidades

ORDA ofrece una gran funcionalidad para canalizar los datos a través de filtros y obtener valores agregados, ofrece un conjunto de operaciones que examinan y realizan cálculos en los conjuntos de datos. Por ejemplo, los métodos sum(), average(), count(), min()max() se utilizan para realizar operaciones que describen sus nombres. Leer documentación

 

 Lenguaje 4D 

Estas son las mejoras más importantes que aportamos al lenguaje 4D para que su experiencia de codificación sea mucho más fácil e intuitiva:

Notación de objetos

La funcionalidad de notación de objetos cambia drásticamente la forma en que escribe código y utiliza el motor de base de datos, su codificación se hace más rápida y fácil de entender. Por ejemplo, simplemente puede escribir $miObjeto.atributo.subAtributo:=5 o acceder a un atributo con $persona.hijos[2].nombre, también puede usar la notación de objetos como expresión. Por ejemplo, cree un objeto de formulario como una variable de texto y asigne directamente el atributo de objeto, es decir [persona]familiares.abuelo.abuelo.nombre. Ya no es necesario utilizar OB Get recursivamente para leer el valor y asignarlo a una variable temporal, solo para mostrarlo. Una de las ventajas de la notación de objetos es el uso de propiedades y valores no definidos, porque el lenguaje 4D ahora acepta valores indefinidos en cualquier parte de una expresión. Y siempre que asigne un valor indefinido a una variable, se establecerá en un valor predeterminado de acuerdo con su tipo. Esto significa que leer la propiedad de un objeto no existente no generará un error ni detendrá la ejecución del código. Leer la documentación 

 

Objetos y colecciones compartidos 

Los objetos compartidos y las colecciones compartidas son una manera fácil y eficiente de compartir información entre procesos apropiativos. Los objetos compartidos y las colecciones compartidas se comportan igual que los estándares, excepto que deben declararse como “compartidos” durante la creación de instancias con los siguientes nuevos comandos: New shared object y New shared collection. Una vez instanciados, se pueden usar directamente, al igual que cualquier otra variable, para leer. Y para escribir o modificar, deben estar rodeados por las palabras clave Use End use. Leer la documentación

 

Nuevo iterador: For each/ End for each 

Se ha agregado un nuevo bucle al lenguaje 4D: For each / End for each, para permitirle iterar sobre tipos de datos avanzados, como colecciones, y sin saber por adelantado cuántos elementos pertenecen a la colección antes de ingresar el bucle. También se puede usar para iterar sobre las propiedades del objeto. Esto es útil si desea escribir algún código genérico, sin conocer los nombres de propiedad del objeto por adelantado. Leer la documentación

 

Colecciones

Colección es un nuevo tipo agregado al lenguaje 4D. Las colecciones son flexibles y pueden acelerar su desarrollo. A primera vista, una colección parece un array, pero mientras un array es una lista altamente optimizada del mismo tipo (Array entero largo, Array Texto, …), una colección es de contenedor que almacena una lista de tipos individuales (un entero largo, luego un texto, luego un número, luego una imagen, un objeto, incluso otra colección, etc.); y se puede acceder con notación de objetos. El comando New collection crea una nueva colección vacía o llenada. Y para facilitar la manipulación de las colecciones, se ofrecen muchos métodos nuevos para usar con la Notación de Objetos. Estos métodos permiten, por ejemplo, agregar o eliminar elementos, ordenar la colección y mucho más. Más de 40 nuevos métodos ya están disponibles. Éstos son solo algunos de ellos: pop(), push(), concat(), resize(), query(), slice(), …  Leer la documentación

 

Comando Null

El nuevo comando Null se puede usar para verificar si un atributo de objeto o un miembro de colección tiene un valor desconocido o faltante (tenga en cuenta la diferencia del valor 0 o una cadena vacía “” con un valor no definido). También permite definir un valor de atributo como desconocido. Este comando se puede usar con notación de objetos. Leer la documentación

 

Desarrollo con objetos

Fechas dentro de objetos 

Las fechas ahora se pueden definir como fechas y no como cadenas en un objeto, haciendo que el uso de las fechas dentro de los objetos sea más fácil e intuitivo. Por lo tanto, OB SETOB Get se pueden utilizar sin requerir la constante is date, y la notación del objeto se puede aplicar a ellos como cualquier otro objeto típico. Para utilizar las fechas dentro de los objetos, simplemente marque la opción “Usar tipo fecha en lugar del formato de fecha ISO en objetos” de la página de configuración de compatibilidad en Configuración de la base. Leer la documentación

 

Soporte de imágenes en objetos

Las imágenes ahora se pueden almacenar en un campo objeto o en una variable objeto. Los comandos OB Get  y OB SET soportan la constante Is picture y  poder almacenar una imagen en un campo objeto. También se puede utilizar con la notación de objeto. Leer la documentación 

 

Validar un objeto JSON

Se ha agregado una nueva opción para ayudarlo a reducir el tiempo de depuración al analizar cadenas JSON. El parámetro opcional * de JSON Parse crea información de depuración adicional (propiedad __symbols) que ofrece la ruta, la posición de línea y el desplazamiento de línea de cada propiedad y subpropiedad del objeto. Incluso si un objeto está bien formado, es posible que no cumpla con las especificaciones o normas de contenido solicitadas. El nuevo comando <ahref=”http://doc.4d.com/4Dv17/4D/17/JSON-Validate.301-3730393.es.html”>JSON Validate le permite verificar si la estructura del objeto se ajusta a una especificación determinada (JSON schema).  <ahref=”http://doc.4d.com/4Dv17/4D/17/JSON-Validate.301-3730393.es.html”>Leer la documentación

Una forma fácil de inicializar un objeto

El comando New Object le permite crear un objeto vacío o crearlo con propiedades y valores iniciales en una sola línea de código.  Leer la documentación

 

Buscar una lista de elementos en un solo objeto

Ahora es posible buscar en un array dentro de un objeto utilizando argumentos vinculados. El comando QUERY BY ATTRIBUTE permite la ejecución de búsquedas complejas dentro de una lista de elementos en un solo objeto. Al buscar atributos de array con múltiples argumentos de consulta unidos por el operador &, tendrá la opción de elegir obtener los registros donde coincidan los argumentos en al menos un elemento o en el mismo elemento.  Leer documentación

Ordenar registros por atributo de objeto

Ahora es posible ordenar registros basados en un atributo de objeto específico cuando se muestra una selección, por ejemplo, en un list box, gracias al nuevo comando ORDER BY ATTRIBUTE. Leer la documentación

 

Multihilo apropiativo

El multihilo apropiativo permite que su aplicación aproveche al máximo las computadoras multinúcleo. Como resultado, sus aplicaciones se ejecutan más rápido y pueden soportar a más usuarios conectados. Se han mejorado más de veinte comandos existentes para que puedan ser utilizados en procesos apropiativos. Leer la documentación

 

Formularios dinámicos

Ahora es posible crear y usar formularios dinámicos. Almacenados en un formato basado en texto (JSON), creando un espectro de nuevas oportunidades: crear formularios totalmente adaptados al contexto del usuario final, compartir el mismo formulario entre varias bases de datos. La descripción textual del formulario se puede guardar en un objeto 4D o un archivo. Luego, en tiempo de ejecución, los formularios se pueden cargar. Se han mejorado los siguientes comandos para que se pueda pasar un objeto 4D o una ruta de archivo JSON: Open form window, DIALOG, FORM SET INPUT, FORM SET OUTPUT, OBJECT SET SUBFORM, OBJECT GET SUBFORM, FORM LOAD, Print form. Leer documentación

 

Comunicación simplificada entre formularios 

Deshágase de su código complejo y variables globales al vincular un objeto a un formulario y usarlo internamente con el nuevo comando Form. Todo lo que necesita hacer es pasar los parámetros en un objeto a un formulario usando el comando DIALOG. Toda propiedad de este objeto estará disponible desde el formulario a través del comando Form. Esto también es válido para subformularios. Leer la documentación

 

Nuevas posibilidades de programación con acciones estándar 

Las acciones estándar, como First Record  o color?value=red, se pueden asignar a un botón o a un elemento de menú en la interfaz de usuario o por programación. Uno de los beneficios es que 4D también maneja automáticamente la desactivación del elemento de menú o botón siempre que la acción no sea aplicable. Además, se han agregado dos nuevos comandos al lenguaje 4D para manejar fácilmente las acciones estándar por programación:

  • INVOKE ACTION se puede utilizar para activar cualquier acción estándar, opcionalmente en el contexto del objetivo (formulario actual o formulario principal).
  • Para saber si una acción estándar es aplicable y válida en el contexto actual, puede usar el comando Get action info.

Leer la documentación

 

Control de prioridad del administrador de caché

4D 64 bits incluye un administrador de caché totalmente optimizado basado en un mecanismo de administración automático de prioridades para los objetos en la memoria caché. Se otorga un control total sobre la prioridad al manejo de los objetos en la memoria caché, lo que permite un ajuste  avanzado.

Para uso avanzado y casos específicos, puede personalizar las prioridades de caché utilizando dos conjuntos de comandos 4D:

Leer documentación

Seguridad

4D v17 da un salto gigante en materia de seguridad con las siguientes mejoras:

Para más detalles sobre las herramientas y técnicas integradas que intervienen en la creación de un entorno seguro para sus aplicaciones comerciales, consulte nuestra Guía de seguridad.

 

Clasificación A+ para sitios web 4D

Ahora es posible obtener la clasificación A+ (la más alta) de SSL Labs para sus sitios web, simplemente activando la función HSTS (Seguridad de transporte estricto de HTTP) en su servidor web 4D. HSTS permite a los servidores web declarar que los navegadores solo deberían interactuar con él a través de conexiones HTTPS seguras. Una vez activado, el servidor Web 4D agregará automáticamente información relacionada con HSTS a todos sus encabezados de respuesta. Cuando un navegador recibe la respuesta inicial del servidor web 4D con la información HSTS, la registrará. A partir de ese punto, toda solicitud HTTP futura se transformará automáticamente en HTTPS. Y puede especificar el período de tiempo que el navegador debe almacenar esta información con la opción Web HSTS max ageLeer documentación

 

Activación de Perfect Forward Secrecy en el servidor web 4D 

La seguridad predeterminada del servidor web 4D se ha incrementado al soportar Perfect Forward Secrecy (PFS). Esta implementación ofrece su aplicación con un mejor cumplimiento de algunas funcionalidades de seguridad de red, así como también una clasificación más alta en las pruebas de auditoria de seguridad web. PFS se activa automáticamente cuando TLS está activado en el servidor. El comando WEB Get server info se puede usar para asegurarse de que PFS esté habilitado. El valor del nuevo atributo perfectForwardSecrecy es verdadero siempre que se cumplan todas las condiciones necesarias para usar PFS. Recuerde que el algoritmo RC4 ahora es obsoleto en el servidor web 4D como resultado de algunos problemas de seguridad conocidos. Leer documentación

 

Seguridad mejorada para el servidor web 4D

4D soporta Transport Layer Security (TLS v1.0, TLS v1.1 y TLS v1.2) para habilitar las comunicaciones encriptadas entre clientes y servidores. La versión soportada mínima predeterminada es TLS v1.2, las versiones anteriores serán rechazadas ya que podrían ser inseguras. Pero si desea admitir navegadores más antiguos (o herramientas) que no sean compatibles con TLS v1.2, puede disminuir el nivel de seguridad con el nuevo selector Min TLS version para los comandos Get database parameter y SET DATABASE PARAMETERLeer documentación

 

Verificación de hash y contraseña

El mecanismo de hash es ideal para almacenar contraseñas. Se han creado dos nuevos comandos para generar y verificar contraseñas hash: Generate password hash y Verify password hash. Ambos se basan en el algoritmo bcrypt, que es lento por diseño. Por lo tanto, los ataques de fuerza bruta son más lentos y los impactos se reducen al mínimo. Leer documentación

 

Soporte SHA-2

Las funciones digest son útiles cuando se trata de verificaciones de integridad de datos durante intercambios de datos o comparaciones. El comando Generate digest se ha mejorado para soportar SHA-2. Ahora soporta dos algoritmos de la familia SHA-2: SHA-256 y SHA-512. La sintaxis sigue siendo la misma, y ​​se han agregado las constantes SHA256 digest SHA512 digest. <ahref=”http://doc.4d.com/4Dv17/4D/17/Generate-digest.301-3729957.es.html”>Leer documentación

 

Restaurar la última copia de seguridad de la base por defecto

Para proteger sus datos de daños, la opciónRestaurar el último backupsi la base está dañadade la página “Backup” de la Configuración de la base se marca por defecto para las nuevas bases, lo que le ofrece el mejor nivel de protección. Leer documentación

 

4D Write Pro

 

Documentos de varias columnas

Ahora puede crear documentos de varias columnas con 4D Write Pro, así como también convertir sus documentos 4D Write existentes que contienen múltiples columnas. Los comandos WP SET ATTRIBUTESWP GET ATTRIBUTES se han actualizado para soportar los nuevos atributos para la gestión de columnas:

  • wk column count: define el número de columnas para el documento o la sección
  • wk column spacing: define el espacio entre dos columnas
  • wk column rule style, wk column rule color, wk column rule width: define el estilo del separador vertical de columna (punteado, discontinuo, etc.), color o ancho.

Leer documentación

 

Obtenga la posición de cualquier parte de un documento 4D Write Pro

Un nuevo comando, dedicado a 4D Write Pro ya está disponible: WP Get position. número de sección donde comienza el rango, el número de página, el número de columna, el número de línea e incluso la posición del primer caracter del rango en la línea. Leer la documentación

 

Acceso a elementos 4D Write Pro por por programación

El comando WP Get elements devuelve una colección de elementos de todo tipo (párrafos, tablas, imágenes, etc. Si se pasa un rango definido, el comando devolverá una colección que contiene solo elementos del tipo correspondiente (a menos que se especifique en el segundo parámetro) De lo contrario, el comando devuelve una colección que contiene todos los elementos disponibles, sin importar su tipo. Leer la documentación

 

Cómo manejar fácilmente la inserción de texto

El comando WP SET TEXT le permite escribir texto en cualquier posición dentro de un documento. Este comando se usa de la misma manera que la mayoría de los comandos “Insertar” en 4D Write Pro. Toma tres argumentos: el objeto de rango (donde debe insertarse el texto), el texto en sí, luego una constante para definir si el texto debe colocarse antes, después o reemplazar el rango. Leer la documentación

 

Tablas 4D Write Pro

¡Llegan las tablas a 4D Write Pro! Tablas reales, celdas individuales, si ingresa un texto grande en una celda, el texto se ajustará automáticamente y el ancho de la celda seguirá siendo el mismo. Puede crear una tabla desde cero y modificar el estilo de la tabla, o sus columnas, filas e incluso celdas individuales, todo esto por programación.

El comando WP Insert table le permite crear una tabla con un número de celdas, filas o vacío. Los siguientes comandos se han creado para permitirle administrar tablas en su documento 4D Write Pro: WP Table append row, WP Table get rows, WP Table get columns, WP Table get cells. Todos estos nuevos comandos son seguros hilo seguro. Leer la documentación

 

Mecanismo de acciones estándar extendido a 4D Write Pro

Se han creado más de 80 nuevas acciones estándar dedicadas a 4D Write Pro, lo que le permite manejar fácilmente las áreas 4D Write Pro con nuevas acciones como Bold, Color, Spell Check, Freeze expression, Show System Font Picker Dialog…Más de 80 acciones están disponibles. Ahora es posible que cree su propia interfaz de usuario 4D Write Pro sin escribir una línea de código. Leer la documentación

Diseñe su propia barra de herramientas utilizando acciones estándar

Cree fácilmente su barra de herramientas 4D Write Pro personalizada, sin ninguna programación. El mecanismo de acciones estándar, simple pero muy potente, se ha ampliado para que también se pueda asignar a las casillas de selección y a los menús emergentes.

El uso de acciones estándar le permite aprovechar los mecanismos automáticos que le ahorrarán tiempo: la activación/ desactivación del objeto es manejada automáticamente por 4D dependiendo del contexto y el estado actual (para casillas de selección) o valor (para menús emergentes) es automáticamente actualizado de acuerdo con la selección de texto actual. Leer la documentación

 

Diseñe su propio menú contextual para 4D Write Pro

El comando Dynamic pop up menu se ha actualizado, lo que permite diseñar sus propios menús contextuales 4D Write Pro basados en acciones estándar. Leer la documentación

 

4D Write Pro y gestión de imágenes

Imágenes en posición absoluta

Se ofrece un control total sobre la inserción de la imagen en una posición específica: delante o detrás del texto, así como también anclada a la página o a partes específicas del documento (es decir, encabezado, pie de página, secciones). El comando WP Add picture añade la imagen a la página, luego para definir su posición exacta y otras propiedades, puede usar acciones estándar o usar el conjunto de selectores que se agregaron a los comandos WP GET ATTRIBUTES y WP SET ATTRIBUTESLeer la documentación

Soporte de expresiones de imagen

4D Write Pro ahora soporta expresiones de imagen. El comando ST INSERT EXPRESSION se ha expandido para soportar toda expresión que devuelva una imagen. Una expresión puede ser una variable 4D, campo, función o un método definido por el usuario. Tenga en cuenta que antes de usar un método 4D en una expresión, primero debe habilitar el uso de este método usando el comando SET ALLOWED METHODS.   Leer la documentación

Imágenes de fondo de tamaño completo

La creación de imágenes de fondo llenando toda la página es posible con 4D Write Pro, gracias a un atributo de estilo de fondo para recorte de imágenes y origen. Este atributo se puede controlar a través de:

  • Lenguaje 4D: puede usar el comando WP SET ATTRIBUTES y definir el nuevo valor de wk paper box para el recorte y/o origen de la imagen de fondo.
  • Acciones estándar: el comando INVOKE ACTION se puede usar, o en modo de diseño como cualquier otra acción estándar.
  • Widget 4D Write Pro: al seleccionar los elementos de “imagen de fondo” y “documento”, las opciones de clip y origen tendrán una nueva opción de caja de papel disponible. Leer la documentación

 

Administrar encabezados y pies de página por  programación

Los encabezados y pies de página 4D Write Pro se pueden administrar por programación para crear otros documentos basados en una plantilla, gracias a los nuevos comandos, divididos en dos categorías:

  • Comandos para obtener referencias de todo encabezado, pie de página o cuerpo dentro de los documentos, que se pueden usar para obtener rangos asociados, crear documentos para una sección específica: WP Get header, WP Get body WP Get footer.
  • Comandos para mover el cursor a una posición específica: WP Get frame se utiliza para obtener una referencia al marco en el que se encuentra actualmente el cursor, mientras que WP SET FRAME define el cursor en un marco específico. 

Leer la documentación

 

Hipervínculos 4D Write Pro

Puede agregar un enlace al logotipo de su empresa o nombre de empresa con el atributo wk link url. Los hipervínculos se pueden agregar en imágenes, texto o una combinación de ambos, simplemente usando los comandos WP SET ATTRIBUTES y WP GET ATTRIBUTESLeer la documentación

 

Uso de los caracteres iniciales para las tabulaciones

4D Write Pro ofrece una funcionalidad adicional para ajustar su diseño: caracteres iniciales (por ejemplo, los puntos repetidos o cualquier otro carácter en una tabla de contenidos, por ejemplo). Los caracteres principales se pueden controlar desde el menú contextual cuando se hace clic en una tabulación existente en el área de la regla, o por programación, gracias al nuevo selector wk tab stop leadings y al comando WP SET ATTRIBUTES. Leer la documentación

 

Regla horizontal  4D Write Pro

Utilice la regla horizontal en un área 4D Write Pro para ajustar los márgenes, las indentaciones y alinear horizontalmente texto, gráficos, pestañas y otros elementos en sus documentos. Leer la documentación

 

4D View Pro

 

Convertir documentos a 4D View Pro

El primer paso para convertir sus documentos 4D View existentes a 4D View Pro ya está en funcionamiento. Gracias al nuevo comando VP Convert from 4D View, la mayoría de las propiedades y la información almacenada en documentos 4D View se convierten automáticamente, incluida la estructura del documento, valores, formatos, estilos, bordes y fórmulas. Leer la documentación

 

Hojas de cálculo 4D View Pro

Gracias al nuevo objeto de formulario de 4D View Pro y los nuevos comandos de 4D View Pro, ahora puede crear hojas de cálculo  4D View Pro. Cree un nuevo documento con VP NEW DOCUMENT, guárdelo en el disco con VP EXPORT DOCUMENT o en la base de datos utilizando VP Export to object y vuelva a abrirlo con VP IMPORT DOCUMENTVP IMPORT FROM OBJECTLeer la documentación

 

Altura de fila variable automática de List box

4D View Pro soporta la altura de fila variable automática, lo que significa que un list box adapta la altura de cada fila a su contenido para que el texto completo o la imagen se puedan mostrar evitando todo tipo de problemas de ajuste. Tres nuevas propiedades están disponibles en la Lista de propiedades: Altura de fila automática, Altura de fila mínima y Altura máxima de fila. Estas configuraciones permiten a los desarrolladores definir si un list box utiliza el modo de altura de fila automática, además de la altura de fila mínima y máxima permitida.
Estas configuraciones también se pueden administrar por programación usando el comando LISTBOX SET PROPERTY y el nuevo comando LISTBOX SET AUTO ROW HEIGHTLeer la documentación

 

 Más funcionalidades de programación

 

Obtener información del hardware de la máquina

El comando Get system info recupera todos los detalles del hardware y del sistema para la máquina en ejecución e información que incluye: qué SO se está utilizando, cuál procesador(es), cuánta RAM hay disponible y más. Leer documentación

El comando WEB Get server info recupera información detallada sobre su servidor Web 4D. Este comando tiene un parámetro de entrada opcional, withCacheInfo,que es útil si se necesita la información de la caché del servidor web. Este atributo está definido como “False” por defecto.Leer documentación

 

Información detallada sobre usuarios y procesos

El comando Get process activity da una instantánea de las sesiones de usuario conectadas, los procesos en ejecución relacionados y todos los procesos actuales, incluidos los procesos internos que no son accesibles por el comando PROCESS PROPERTIES. Además, se incluye un atributo systemID para identificar de manera única cualquier tipo de proceso ya sea tipo usuario, 4D o libre. También puede calcular a partir de la información de sesión/proceso el tiempo de CPU consumido por este proceso desde la conexión (en segundos) y el porcentaje de actividad (por ejemplo, 2%). Además de esto, el comando facilita el análisis de los resultadosLeer documentación

 

Información detallada sobre licencias

El comando Get license info devuelve información detallada sobre las licencias instaladas y las licencias utilizadas/disponibles. Leer la documentación

 

Mejor administración de extensiones de archivos y carpetas 

Se han creado dos comandos para facilitar la administración de rutas de archivos y carpetas. El comando Path to object devuelve un objeto que contiene las propiedades específicas (carpeta principal, nombre de archivo o carpeta, extensión de archivo o carpeta) de la ruta que pasó en el parámetro. El comando Object to path crea una ruta desde los atributos de objeto pasados ​​en el parámetro. Entonces, para componer una nueva ruta, modifique los atributos de objeto que necesita y simplemente recombínelos.
Estos comandos ahora se deben usar en lugar de los comandos obsoletos _o_Document type y _o_SET DOCUMENT TYPELeer la documentación

 

Fácil acceso a los archivos de registro 

El comando Get 4D file se ha mejorado para un mejor acceso a los archivos de registro. Ahora puede encontrar fácilmente un archivo de registro en particular en lugar de obtener la carpeta que contiene todos los registros. Se ha creado un conjunto de selectores nuevos para este comando: Request log file, Debug log file, Backup log file, Verification log file, Compacting log file, Repair log file, HTTP debug log file y Build application log fileLeer la documentación

 

Comando Timestamp

El comando Timestamp permite obtener una marca de tiempo UTC precisa que incluye milisegundos. Leer la documentación

 

 Experiencia del usuario 

 

Completar código y sugerencias para atributos de objeto 

El editor de métodos se ha mejorado para ofrecer completar código para los atributos del objeto. Se muestra una lista de atributos sugeridos, cada vez que se escribe un carácter de punto después de un objeto, para mejorar la velocidad de codificación y evitar errores o errores tipográficos. El comportamiento de autocompletar se puede personalizar desde el panel “Preferencias 4D “, para definir si la lista de sugerencias se abrirá automáticamente después de escribir un carácter de punto (opción seleccionada) o solo después de usar la tecla de tabulación (opción no seleccionada). Leer la documentación

 

Línea de productos 4D Windows 64 bits libre de Altura

La línea de productos 4D Windows 64 bits ya no depende de la librería Mac2Win de Altura. 4D Server Windows 64 bits fue el último paso para completar y esto se hizo con 4D v16 R4. Esto le permite a 4D utilizar internamente tecnologías modernas en la plataforma de Windows y hacer que se beneficie de nuevas funcionalidades como SDI. Leer la documentación

 

Soporte de SDI en Windows

La aplicación 4D de Windows solía tener una ventana principal gris (llamada MDI – Interfaz de múltiples documentos) con todas las ventanas de la aplicación visualizadas dentro (como ventanas secundarias). Las aplicaciones SDI (Single Document Interface) tienen una ventana principal que puede abrir muchas ventanas adicionales que son independientes de la ventana principal. Se pueden mover en otras pantallas, permanecen visibles incluso si la ventana principal está oculta y así sucesivamente… así que 4D ahora permite ambos modos en Windows 64 bits para aplicaciones fusionadas.  Leer la documentación

 

Mensajes de ayuda en list boxes

Puede deshabilitar o habilitar por programación todos los mensajes de ayuda dentro de una aplicación 4D utilizando el comando SET DATABASE PARAMETER. Y también puede definir el retraso de visualización y la duración máxima de la visualización por idioma. Pero eso no es todo, también es posible modificar dinámicamente el texto de un mensaje de ayuda utilizando el comando OBJECT SET HELP TIP. Además de eso, el comando LISTBOX GET CELL POSITION ahora soporta dos nuevos parámetros opcionales (posición x e y en píxeles) y devuelve los números de columna y fila correspondientes, para ayudarlo a mostrar consejos sobre una columna, fila o celda particular de un list box. Leer la documentación

 

Definir el orden de tabulación del formulario por programación

Defina el orden de entrada del objeto en un formulario por programación, de modo que pueda controlar en qué objeto del formulario siguiente se enfocará cuando el usuario presione la tecla TAB. Dos nuevos comandos: FORM SET ENTRY ORDER y FORM GET ENTRY ORDER, le permiten establecer y obtener dinámicamente el orden de entrada de los objetos de formulario actuales para el proceso actual. Leer la documentación

 

Mejora de la experiencia de usuario con IPv6

La interfaz de usuario ha mejorado para una mejor experiencia de usuario para usuarios con configuraciones de red IPv6.  Leer la documentación

 

Exportar resultados después de un “buscar en diseño”

El diálogo “buscar en diseño” ha sido dotado de dos nuevas funcionalidades relacionadas con la ventana de resultados. Se ha agregado un nuevo botón para permitir la interrupción de una búsqueda en curso. Además, hay una nueva opción de filtro disponible para que pueda seleccionar los elementos de resultado que desea conservar y eliminar todos los demás elementos, excepto esa selección. Además, los resultados de una operación de “Buscar en el diseño” se muestran en una lista jerárquica. Ahora también puede exportar los resultados de búsqueda a un archivo de texto que se puede abrir más adelante en una hoja de cálculo, por ejemplo, lo que le permite compartir o almacenar fácilmente los resultados. Para hacerlo, simplemente seleccione el nuevo elemento Exportar resultados, disponible en el menú de acción “Buscar en diseño”.  Leer la documentación

 

Personalizar el color de resaltado de selección de list box

Ahora es posible tener un control detallado sobre el color de resaltado, para cada línea o incluso celda. Para esto, se ha agregado una nueva opción a la lista de propiedades del list box: Ocultar el resaltado de selección. Cuando esta opción está marcada, el desarrollador tendrá hacer visibles las selecciones del list box utilizando las opciones de interfaz disponibles. Luego, puede definir un color de fondo específico, colores de fuente y/o estilos de fuente programando para personalizar la apariencia de las filas seleccionadas. Esto se puede hacer utilizando arrays o expresiones, según el tipo de list box mostrado (selecciones o arrays). Leer la documentación

 

Ventanas con pestañas en el modo Diseño 4D en MacOS Sierra

En macOS Sierra, las aplicaciones ahora tienen la oportunidad de utilizar ventanas con pestañas en lugar de múltiples ventanas. 4D Developer Edition 64 bits ahora puede aprovechar esta nueva funcionalidad de Apple en el entorno de diseño gracias a la nueva opción Ventanas a pestañas disponible en las Preferencias 4D. Cuando la nueva preferencia está activa, las ventanas Método y Editor de formularios se pueden combinar en una sola ventana con pestañas.  Leer la documentación

 

Tabla cruzada en el editor de informes rápidos

El editor de informes rápidos 64 bits ahora admite informes de tablas cruzadas además de informes de listas que permiten a los usuarios finales apreciar la fluida experiencia del usuario al diseñar informes. Elegir el modo de tabla cruzada le permite mostrar su informe como una tabla pivote. Tenga en cuenta que aún es posible volver a abrir un informe creado con los productos 4D de 32 bits.  Leer la documentación

 

Nuevo motor de renderizado para áreas web

Para una mejor experiencia de usuario y una mejor compatibilidad con las nuevas funcionalidades HTML, 4D está actualizando su componente interno para objetos de Área web incorporados en 4D 64 bits a Blink (también utilizado por Google Chrome). Blink es el motor de renderizado más actualizado y bien mantenido. El cambio a Blink no requiere ningún cambio de código para su aplicación y no tiene ningún impacto estricto en los usos del área web; todos los comandos y eventos para las Áreas web integradas funcionan igual que antes, excepto algunas preferencias que no son compatibles y se ignoran. Cuando se selecciona la opción Usar motor de renderización web incorporado, 4D utiliza WebKit en versiones 32 bits y Blink en versiones 64 bits.  Leer la documentación

 

 R-releases en profundidad