+ All Categories
Home > Documents > 4D Doc Center : 4D v15 - Actualización (standard...

4D Doc Center : 4D v15 - Actualización (standard...

Date post: 20-Mar-2018
Category:
Upload: donguyet
View: 216 times
Download: 2 times
Share this document with a friend
138
4D v15 - Actualización (standard edition) Bienvenido a 4D v15. Este manual describe todas las funciones e implementaciones añadidas en esta nueva versión mayor de 4D. 4D v15 representa un paso crucial en el proceso de integración de las aplicaciones 4D a las nuevas tecnologías, tanto de hardware como de software, al tiempo que ofrece muchas características esperadas por la comunidad de desarrolladores 4D: Nuevos tipo de campo "Objeto", Múltiples optimizaciones (búsquedas a través del motor de SQL y arrays ordenados, nueva capa de red ServerNet, niveles elevados de seguridad de red, soporte extendido para Unicode, etc.) Apertura a nuevas tecnologías: 4D Mobile para la conexión a las aplicaciones Wakanda, LDAP para la conexión a los directorios de empresas, nuevas etiquetas 4D como alternativas a la tecnología XSLT, que está siendo abandonada, Adición de muchos nuevos comandos y funciones para el manejo de formularios y sus objetos, como list boxes, para ayudar en el diseño de interfaces modernas y dinámicas, Nuevo objeto 4D Write Pro para la edición y procesamiento de textos integrados, La adición de funcionalidades de seguimiento e introspección del código y de las búsquedas. Nuevas versiones OS X de 64 bits: 4D v15 entrega no sólo la versión 64 bits OS X de 4D Server (preview), sino también 4D Internet Commands, 4D Pack, 4D For OCI , 4D ODBC Pro y 4D ODBC Driver, lo que le permite construir un entorno completo en las máquinas Apple más poderosa (note sin embargo que 4D Server 64 bits OS X se ofrece como una versión preliminar, no se recomienda implementarla en un entorno de producción). Nota: si usted es miembro del programa de entrega continua 4D (R-release), ya ha tenido la oportunidad de realizar varias actualizaciones progresivas de sus aplicaciones 4D y esta versión no es más que un nuevo lanzamiento. Por ejemplo, si está utilizando la versión v14 R5, ya tiene todas las nuevas características "v14 Rx" que se incluyen en este manual y que estaban cubiertas en los manuales de actualización de las versiones R. En este caso, sólo puede leer el manual 4D v15 - Actualización (edición R-release) . Modo Diseño Lenguaje 4D Server 4D SQL Server Optimizations 4D Write Pro 4D Internet Commands 4D View 4D SVG 4D Pack Company Directory (LDAP) Lista alfabética de los comandos - 1 -
Transcript
Page 1: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

4D v15 - Actualización (standard edition)

Bienvenido a 4D v15. Este manual describe todas las funciones e implementaciones añadidas en esta nueva versión mayor de 4D.4D v15 representa un paso crucial en el proceso de integración de las aplicaciones 4D a las nuevas tecnologías, tanto de hardwarecomo de software, al tiempo que ofrece muchas características esperadas por la comunidad de desarrolladores 4D:

Nuevos tipo de campo "Objeto",Múltiples optimizaciones (búsquedas a través del motor de SQL y arrays ordenados, nueva capa de red ServerNet, niveleselevados de seguridad de red, soporte extendido para Unicode, etc.)Apertura a nuevas tecnologías: 4D Mobile para la conexión a las aplicaciones Wakanda, LDAP para la conexión a losdirectorios de empresas, nuevas etiquetas 4D como alternativas a la tecnología XSLT, que está siendo abandonada,Adición de muchos nuevos comandos y funciones para el manejo de formularios y sus objetos, como list boxes, para ayudar enel diseño de interfaces modernas y dinámicas,Nuevo objeto 4D Write Pro para la edición y procesamiento de textos integrados,La adición de funcionalidades de seguimiento e introspección del código y de las búsquedas.Nuevas versiones OS X de 64 bits: 4D v15 entrega no sólo la versión 64 bits OS X de 4D Server (preview), sino también 4DInternet Commands, 4D Pack, 4D For OCI, 4D ODBC Pro y 4D ODBC Driver, lo que le permite construir un entornocompleto en las máquinas Apple más poderosa (note sin embargo que 4D Server 64 bits OS X se ofrece como una versiónpreliminar, no se recomienda implementarla en un entorno de producción).

Nota: si usted es miembro del programa de entrega continua 4D (R-release), ya ha tenido la oportunidad de realizar variasactualizaciones progresivas de sus aplicaciones 4D y esta versión no es más que un nuevo lanzamiento. Por ejemplo, si estáutilizando la versión v14 R5, ya tiene todas las nuevas características "v14 Rx" que se incluyen en este manual y que estabancubiertas en los manuales de actualización de las versiones R. En este caso, sólo puede leer el manual 4D v15 - Actualización(edición R-release).

Modo Diseño Lenguaje 4D Server 4D SQL Server Optimizations 4D Write Pro 4D Internet Commands 4D View 4D SVG 4D Pack Company Directory (LDAP) Lista alfabética de los comandos

- 1 -

Page 2: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

Modo Diseño

Interfaz línea de comando extendida Tipo de campo Objeto Índice obligatorio para campos únicos Formularios Comandos obsoletos ocultos Modo Unicode para los métodos Configuración Inglés-US en el editor de métodos Depurador y Explorador de ejecución Editor de búsquedas Archivo de datos por defecto en aplicaciones fusionadas

- 2 -

Page 3: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

Interfaz línea de comando extendida

Originalmente introducido en 4D v14 R3El analizador de líneas de comando de la aplicación, anteriormente soportado para OS X únicamente, se ha mejorado para correr enOS X y Windows. Ahora puede escribir en Windows por ejemplo:

%HOMEPATH%\Desktop\4D\4D.exe --structure %HOMEPATH%\Documents\myBase.4dbase --data%HOMEPATH%\Documents\data\myData.4DD

- 3 -

Page 4: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

Tipo de campo Objeto

A partir de 4D v15, un nuevo tipo de campo Object es soportado por el motor de base de datos 4D.Desde 4D v14, usted podía manejar objetos en sus aplicaciones 4D pero sólo a través del lenguaje (ver Objetos (Lenguaje)). El tipode campo Objeto le permite ir más allá:

almacenar objetos en el archivo de datos,añadir, modificar o eliminar de forma dinámica atributos de objetos,efectuar búsquedas de objetos por atributo,importar/exportar valores de objetos, etc.

Nota de implementación: algunas funciones no soportan actualmente los campos objeto (ver el siguiente párrafo Limitacionesactuales).

¿Por qué utilizar campos objeto?

El tipo objeto permite definir campos sin esquema dinámico. Estos campos objeto pueden ser considerados comocampos "definidos por el usuario" o "personalizados". En 4D v15, ahora tiene que elegir entre los modelos de datos con o sinesquema. En ambos casos, puede ejecutar búsquedas indexadas rápidas.También tenga en cuenta que los campos objeto pueden simplificar los modelos de datos estándar. Por ejemplo, para una tabla"Contacts" convencional, un solo campo de tipo objeto permite evitar la creación de decenas de campos que representan todos losvalores posibles, mayoría de los cuales no se utilizan en el 90% de los casos. Se crea el modelo de información sobre la marcha sólosi es necesario.

Definición de los campos objeto

El nuevo tipo de campo Objeto se puede definir como cualquier otro tipo de datos, utilizando el Inspector del editor de estructura:

Los campos objeto 4D almacenan pares atributo/valor de diferente tipo, sin esquemas de datos predefinidos. La estructura de datosalmacenada no es necesariamente la misma entre los diferentes registros. Por ejemplo, un campo Objeto [Person]Address puedecontener diferentes atributos dependiendo de la ciudad, el país, etc.:

record1= {"street1":"Cotton Treasure Grounds", "street2":"Place Corners", "state":"MD",...} record2={"street1":"Umber Road", "Number":"28", "state":"MO",...}

La estructura de los objetos 4D se basa en el principio de pares "atributo/valor". La sintaxis de estos objetos se basa en la notaciónJSON, pero no la sigue completamente:

Un nombre de atributo es siempre un texto, por ejemplo "Nombre".Un valor de atributo puede ser de los siguientes tipos:

número (Real, Entero, etc.)textoarray (texto, real, entero largo, entero, booleano, objeto, puntero)

- 4 -

Page 5: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

nullBooleanopuntero (almacenado como tal, evaluado utilizando el comando JSON Stringify o al copiar),fecha (formato "YYYY-MM-DDTHH:mm:ssZ" )objeto (los objetos se pueden anidar en varios niveles).

Advertencia: recuerde que los nombres de los atributos son sensibles a las mayúsculas y minúsculas.Un campo Objeto puede ser tan grande como 2 GB. Cuando se trabaja con un registro que contiene un campo Objeto, el objetocompleto se carga en memoria. Al igual que para los campos de tipo Texto, Imagen o BLOB, los campos objeto pueden seralmacenados en el archivo de datos (con los registros o no), o fuera del archivo de datos; esta opción se describe en la secciónAlmacenamiento externo de los datos del manual de Diseño.Un campo objeto puede ser indexado (opción Automática únicamente), lo que significa que todas la rutas de atributos se indexanautomáticamente. También puede ser Invisible o o tener el atributo Exponer con el servicio 4D Mobile. Por otra parte, un campoObjeto no se puede establecer como Único.Utilice los comandos 4D Objetos (Lenguaje) para gestionar los campos objeto. Utilice los comandos OB Get y OB SET para leer yescribir datos en los campos de tipo Objeto. También puede almacenar y leer arrays como atributos utilizando los comandos OBSET ARRAY y OB GET ARRAY.Como los campos de tipo Objeto se basan en texto, el contenido de un campo Objeto se muestra en un formulario 4D por defectocomo texto y con formato JSON (ver el siguiente párrafo).Nota: para trabajar con objetos JSON, puede utilizar los comandos del tema "JSON".

Mostrar e introducir campos objeto en los formularios

De forma predeterminada, los campos objeto se representan como áreas de texto en los formularios 4D. Dentro de estas áreas, losdatos objeto deben ser undefined, o formateados en texto JSON; de lo contrario se devuelve un error.

Por ejemplo, si ha definido el campo [Rect]Desc como un campo Objeto, puede escribir:

CREATE RECORD([Rect]) <p>[Rect]Name:="Blue square" OB SET([Rect]Desc;"x";"50";"y";"50";"color";"blue") SAVE RECORD([Rect])

Cuando el campo [Rect]Desc se incluye en su formulario, se mostrarán los siguientes contenidos:

Puede editar los valores que se muestran directamente en el campo texto o introducir datos objeto directamente con la notaciónobjeto estándar; será formateado en JSON automáticamente al pulsar la tecla [Tab]:

Sin embargo, la edición directa debe realizarse con precaución ya que los espacios fuera de lugar o símbolos darán lugar a un errorde análisis JSON y no se guardarán los datos editados:

Por lo general, es más preciso para manejar el contenido de los campos objeto a través de los comandos Objetos (Lenguaje) yJSON.

- 5 -

Page 6: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

Leer y definir los valores de los campos objeto

Todos los comandos del tema Objetos (Lenguaje) ahora aceptan un campo objeto como primer parámetro (objeto).Al igual que los objetos de lenguaje estándar, los valores de los campos objeto se manejan mediante los comandos del temaObjetos (Lenguaje). Por ejemplo:

// Definir un valor OB SET([Persons]Identity_OB;"First Name";$firstName) OB SET([Persons]Identity_OB;"Last Name";$lastName) // Obtener un valor $firstName:=OB Get([Persons]Identity_OB;"First Name") $lastName:=OB Get([Persons]Identity_OB;"Last Name")

Los arrays también son soportados, por ejemplo:

ARRAY TEXT($arrGirls;3) $arrGirls{1}:="Emma" $arrGirls{2}:="Susan" $arrGirls{3}:="Jamie" OB SET ARRAY([Persons]Children;"Girls";$arrGirls)

Soporte de campos objeto en el lenguaje 4D

El lenguaje 4D ha sido actualizado para soportar campos Objeto. En particular:

Todos los comandos del tema Objetos (Lenguaje) ahora soportan campos objeto como primer parámetro (objeto)Un nuevo comando se ha añadido para manejar las búsquedas en campos Objeto: QUERY BY ATTRIBUTE. Este comandose detalla en una sección separada.Los comandos SELECTION TO ARRAY, SELECTION RANGE TO ARRAY y ARRAY TO SELECTION soportan camposObjeto por medio de ARRAY OBJECT.Los comandos Selection to JSON y JSON TO SELECTION soportan campos de objeto, que se convierten de formaautomática desde y hacia JSON.Note sin embargo, que la siguiente expresión 4D es ambigua:

Selection to JSON([aTable];objectField)

podría interpretarse como:- producir JSON a partir de todos los valores de campoObjeto en la selección actual de la tabla- producir JSON utilizando el valor de registro actual de 'objectField' como una plantilla 4D se comportará como se describió en el primer caso, ya que es el caso más comúnmente utilizado.Los comandos Old y Modified soportan campos Objeto.[#cmd id="965"/] borra el contenido de los campo objeto. GET FIELD PROPERTIES ahora puede devolver Is object.PROCESS 4D TAGS soporta campos objeto en fórmulas 4D únicamente.

Tenga en cuenta sin embargo que, por razones técnicas, algunos comandos no soportan campos Objeto. Estos comandos se listanen la sección "Limitaciones actuales".

Campos objeto y fórmulas Los campos objeto pueden ser utilizados en las fórmulas (con ayuda del editor de fórmulas estándar o el comando EXECUTEFORMULA). Sin embargo, en este contexto, los campos objeto pueden ser manejados únicamente por intermedio de los siguientescomandos:

OB GetOB Is emptyOB Is definedOB Get type

Por ejemplo, puede ejecutar la siguiente fórmula de búsqueda:

- 6 -

Page 7: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

OB Get([Rect]Desc;"color")="blue"

Limitaciones actuales

La mayor parte de las funcionalidades estándar de 4D soportan campos de tipo objeto. Sin embargo, algunas partes avanzadas dela aplicación no están listas para utilizar directamente los campos objeto en la versión actual. Estas partes se actualizaránprogresivamente y estarán disponibles en próximas versiones.

Soporte parcial vía formulas 4D Las siguientes funciones o comandos soportan parcialmente campos objeto a través de fórmulas 4D:

Función/ComandoEditor de búsquedasEditor de ordenaciónEditor de importación/exportación (soporte automático para el formato 4D Application, necesita utilizar formularios para losformatos texto)4D Write4D Write Pro4D View4D TagsPROCESS 4D TAGS

Sin soporte Las siguientes funciones y comandos 4D no admiten campos objeto:

Funciones/ComandosEditor de informes rápidosEditor de etiquetasGráficosPHPPlugin SDKSQL Data Definition Language (CREATE TABLE)SQL Data Manipulation Language (SELECT, INSERT, UPDATE)SQL EXPORT DATABASE y SQL EXPORT SELECTIONDISTINCT VALUESRELATE ONERELATE MANYORDER BYSCAN INDEX

- 7 -

Page 8: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

Índice obligatorio para campos únicos

Originalmente introducido en 4D v14 R4En 4D, los campos con el atributo Único deben ser indexados. En el editor de estructura, ya no se podrá definir campos con unatributo único, si no tienen un índice. En versiones anteriores, aún era posible obtener una configuración de este tipo con fines demantenimiento.El editor de estructura se ha actualizado:

indica visualmente que se creará un índice (si no existe) cuando se selecciona el atributo Único para un campo:

le impide retirar el índice de un campo único (Ninguno o eliminar opciones que no están disponibles para los índices cuandose selecciona un campo de este tipo):

Si desea eliminar el índice de un campo único, debe eliminar el atributo Único de antemano.

- 8 -

Page 9: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

Formularios

Nuevo icono para formato imagen no disponible

Originalmente introducido en 4D v14 R3Un nuevo icono se muestra para las imágenes que se almacenan en un formato que no es "renderizable" en la máquina. La extensióndel formato faltante se escribe en la parte inferior del icono:

Este icono se utiliza de forma automática siempre que se visualizan las imágenes:

Indica que la imagen no se puede mostrar o procesar localmente, pero se puede almacenar para su visualización en otra máquina.Este es el caso, por ejemplo, de las imágenes en formato PDF en una plataforma Windows o imágenes basadas en PICT con un 4DServer 64 bits bajo OS X (ver 4D Server, versión 64 bits para OS X (preliminar)).

Nueva propiedad Radio de esquina

Originalmente introducido en 4D v14 R4Ahora puede configurar el radio de redondeo de esquinas de objetos de formulario rectángulo redondeado. La propiedad radiodefine el radio de cada esquina redondeada.Nota: en versiones anteriores, esta propiedad no era personalizable (siempre 5 píxeles).Esta propiedad está disponible a través de la nueva opción Radio de esquina en la lista de propiedades del editor de formularios(descrito más adelante), así como también el uso de dos nuevos comandos del lenguaje (ver OBJECT SET CORNER RADIUS yOBJECT Get corner radius).

Radio de esquina La propiedad Radio de esquina ya está disponible en el tema "Coordenadas y Tamaño" de la Lista de propiedades para losobjetos rectángulo redondeado:

- 9 -

Page 10: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

Por defecto, el valor del radio de rectángulos redondeado es 5 píxeles. Puede cambiar esta propiedad para dibujar rectángulosredondeados con formas personalizadas:

El valor mínimo es 0, en este caso se dibuja un rectángulo no redondeado estándar.El valor máximo depende del tamaño de rectángulo (que no puede exceder la mitad del tamaño del lado más corto del rectángulo) yse calcula dinámicamente.

Nombres más largos para objetos de formulario

Originalmente introducido en 4D v14 R5Los nombres de objetos de formulario ahora pueden contener hasta 255 bytes. En versiones anteriores, estos nombres se limitarona 31 bytes.El uso de nombres más largos para los objetos de formularios ofrece una mayor facilidad en la definición y aplicación de las normasde denominación específicas, como "xxxx_Button" o "xxx_Mac".

- 10 -

Page 11: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

Comandos obsoletos ocultos

A partir de 4D v15, los comandos 4D obsoletos tienen sistemáticamente el prefijo "_o_" y se retiran de las listas 4D, así comotambién de las listas de entrada predictiva.Nota: la lista de comandos obsoletos renombrados en 4D v15 está en la sección "Comandos obsoletos renombrados".En versiones anteriores, los comandos obsoletos no siempre tenían prefijos como tal, y seguían disponibles junto con los comandosregulares, lo que podría ser una fuente de confusión. En 4D v15, sólo los comandos no obsoletos pueden ser seleccionados de listasde comandos:

Las listas en cuestión son:

Explorador/pestaña "Comandos"Listas de selección del editor de métodos (lista de comandos y lista de comandos por tema), así como también la ventana deentrada predictivaListas de selección del editor de fórmulas.

Por supuesto, en su código existente, los comandos obsoletos no se eliminan (simplemente van a llevar el prefijo "_o_") y continuarántrabajando como se documentó mientras eran soportados. Si es necesario, puede agregar un comando obsoleto simplementeescribiendo su nombre en un método; aún se interpreta correctamente:

Sin embargo, tenga en cuenta que no se recomienda utilizar comandos obsoletos en el nuevo código (consulte Funcionalidadesobsoletas y eliminadas).

- 11 -

Page 12: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

Modo Unicode para los métodos

4D v15 le permite guardar cadenas de código de los métodos 4D en Unicode:

En las bases de datos creadas con 4D v15 y posteriores, el código de los métodos se guarda automáticamente en UnicodeEn bases de datos convertidas de una versión anterior, la nueva opción Save methods as Unicode de las propiedades de labase permite pasar al modo Unicode:

Nota: si modifica esta opción, es necesario reiniciar la aplicación para que el cambio se tenga en cuenta. Puede activar odesactivar esta opción en cualquier momento; sólo los métodos guardados posteriormente se ven afectados.

¿Por qué guardar el código en Unicode?

En versiones anteriores de 4D, las cadenas en el código de los métodos (fórmulas, nombres de variables y métodos, comentarios,etc.) se almacenan utilizando la codificación actual local. Esta codificación podría causar problemas, sobre todo cuando se compartecódigo 4D entre desarrolladores de diferentes países: por ejemplo, si un desarrollador francés escribió código 4D con acentos yluego envía la base a un desarrollador Inglés, se perderían estos acentos. También podrían ocurrir graves problemas con códigoescrito con versiones en japonés.Guardar métodos como Unicode resuelve todos estos tipos de problemas y hace que sea posible el intercambio de código 4D quecontiene caracteres locales específicos.Le recomendamos que active la opción modo Unicode para métodos tan pronto como sea posible en sus bases existentes,especialmente si trabaja en un entorno internacional.Nota de implementación: esta nueva funcionalidad aplica al lenguaje mismo y a su interpretación. Algunas ventanas del editor 4D,tales como la lista de propiedades, aún utilizan la codificación actual local y por lo tanto pueden mostrar algunas cadenasincorrectamente. Sin embargo, esto no afecta a la ejecución del código.

Compatibilidad

El almacenamiento de métodos 4D en Unicode (en una nueva base 4D v15 o en base convertida con la opción Save methods asUnicode seleccionada) es transparente para los usuarios.Sin embargo, los cambios internos necesarios han dado lugar a una profunda modificación de la representación de los punterosen el código 4D. Los "nuevos" punteros se han mejorado internamente y también soportan funciones adicionales, tales comoelementos de un array 2D (ver RESOLVE POINTER).Para mantener la compatibilidad con los componentes y plug-ins previamente compilados, un nuevo tipo de puntero se ha añadido allenguaje 4D, en lugar de sustituir el tipo existente. Este nuevo tipo se maneja de forma transparente en sus aplicaciones. Sinembargo, tenga en cuenta que:

RESOLVE POINTER ahora devuelve -1 en lugar de 0 en el cuarto parámetro para punteros a variables y arraysunidimensionales.Get pointer se comportará de manera diferente con respecto a los nombres de las variables inválidos o espacios adicionales.

- 12 -

Page 13: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

Configuración Inglés-US en el editor de métodos

A partir de 4D v15, el editor de métodos 4D utiliza el modo internacional "Inglés-US" por defecto, independientemente de la versión4D o de la configuración del sistema local. Esta nueva funcionalidad neutraliza las variaciones regionales que puedan perturbar lainterpretación de código entre aplicaciones 4D (formatos fecha por ejemplo); y en las versiones en francés de 4D únicamente, loscomandos y las constantes ahora se escriben en "Inglés-US".Esta nueva configuración predeterminada ofrece a los desarrolladores 4D dos ventajas principales:

Facilita el intercambio de código entre los desarrolladores, sin importar su país, configuración regional, o la versión de 4Dutilizada. Un método 4D ahora se puede intercambiar por una simple copiar/pegar, o guardarse en un archivo de texto, sinproblemas de compatibilidad.También hace posible la inclusión de métodos 4D en herramientas de control de fuentes, que a menudo requieren que lasexportaciones sean independientes de los parámetros regionales y de los lenguajes.

Esta nueva configuración puede ser desactivada por medio de una nueva opción en la caja de diálogo Preferencias de 4D.

Nueva opción de Preferencias

La nueva opción Utilizar la configuración regional del sistema le permite activar/desactivar los parámetros del código"internacionales" en la caja de diálogo Preferencias de 4D, en la pestaña Métodos/Opciones:

Cuando la opción está desactivada (por defecto en 4D v15), los parámetros English-US se utilizan en los métodos 4D para laaplicación 4D actual.Cuando la opción está seleccionada, la configuración regional se utiliza en métodos 4D para la aplicación 4D actual, al igualque en las versiones anteriores de 4D.

Si modifica la opción, es necesario reiniciar la aplicación 4D para que se tenga en cuenta el cambio.

Modificaciones relacionadas con el parámetro Inglés-US

Los nuevos ajustes Inglés-US pueden modificar sensiblemente su manera de escribir métodos. Esto concierne al código en mododesarrollo, así como también a las fórmulas introducidas en aplicaciones desplegadas.En este nuevo modo, el código debe cumplir las siguientes reglas se deben cumplir:

el separador decimal para los números reales es el punto (".") en todas las versiones (y no coma (",") como es habitual enfrancés, por ejemplo).las constantes de tipo fecha ahora deben utilizar el formato ISO (!YYYY-MM-DD!) en todas las versiones.los nombres de los comandos y de las constantes deben estar en inglés (este cambio sólo concierne a las versiones francesasde 4D, ya que este era el caso con otros idiomas).

Nota: el editor de métodos incluye mecanismos específicos que corrigen automáticamente entradas las entradas incorrectas si esnecesario.La siguiente tabla ilustra las diferencias entre el código en 4D v15 y en las versiones anteriores:

- 13 -

Page 14: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

Ejemplo de código en los métodos/fórmulas4D v15 (modo por defecto, todas las versiones) a:=12.50

b:=!2013-12-31!Current date

4D v14 o 4D v15 (preferencia marcada, versión US, por ejemplo) a:=12.50b:=!12/31/2013!Current date

4D v14 o 4D v15 (preferencia marcada, versión en francés) a:=12,50b:=!31/12/2013!Date du jour

Nota: en versiones anteriores de 4D, y en 4D v15 cuando esta nueva preferencia está seleccionada, los formatos de fecha y real sebasan en la configuración del sistema.

Cambios en la versión francesa

Ciertos cambios específicos sólo afectan a la versión francesa de 4D. Esta versión ofrecía el lenguaje (comandos y constantes), asícomo también ayuda en línea y documentación, en francés. Más información en la versión francesa de este manual.

Compatibilidad

En aplicaciones convertidas de versiones anteriores, la configuración inglés-US del código 4D en 4D v15 a veces puede requeriradaptaciones en el contexto en el que el código se interpreta sobre la marcha y no es tokenizado, tal como con EXECUTEFORMULA. Esto concierne al modo desarrollo 4D y también a los productos de despliegue (4D en modo remoto y aplicaciones 4Dfusionadas).

La siguiente tabla lista el impacto en las aplicaciones 4D v15, dependiendo del lenguaje de ejecución (otros idiomas deben serimpactados de la misma manera que la versión US):

FuncionesImpacto cuando ellenguaje de la aplicación4D es US

Impacto cuando el lenguaje de laaplicación 4D es FR

Impacto cuando ellenguaje de la aplicación4D es DE

Editor de fórmulas en las fórmulas: formatofecha únicamente

en las fórmulas: lenguaje de los comandos(US) y separador date/time/dec

en las fórmulas: formato defecha + separador dec

Informes rápidos en las fórmulas: formatofecha únicamente

en las fórmulas: lenguaje de los comandos(US) y separador date/time/dec

en las fórmulas: formato defecha + separador dec

4D Write en las fórmulas: formatofecha únicamente

en las fórmulas: lenguaje de los comandos(US) y separador date/time/dec

en las fórmulas: formato defecha + separador dec

4D View ningunoen las fórmulas (al utilizar comandos 4D,no 4D View): lenguaje de los comandos(US)

ninguno

PROCESS 4D TAGS formato fecha únicamente Comandos (si no utiliza :Cxxx) separadordate/time/dec

formato de fecha +separador dec

EXECUTEFORMULA formato fecha únicamente lenguaje de los comandos (US) y

separador date/time/decformato de fecha +separador dec

METHOD GETCODE/METHODSET CODE

formato fecha únicamente command language (US) anddate/time/dec separator

formato de fecha +separador dec

Tenga en cuenta que, si es necesario, la nueva preferencia de opción Usar configuración del sistema regional le permite revertiral comportamiento 4D v14.

Sobre el despliegue

Dado que la nueva preferencia es local para la máquina, se debe establecer en cada equipo donde se ejecuta la aplicación 4D sidesea restaurar el comportamiento 4D v14. En el contexto de las aplicaciones fusionadas, debe editar el archivo de preferencias 4Dv15 en cada máquina local y definir la llave "use_localized_language" a "true".

Nota: un ejemplo de código 4D que modifica el archivo de preferencias se ofrece en la versión francesa de este manual.

- 14 -

Page 15: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

Depurador y Explorador de ejecución

Página Proceso

Introducido en 4D v14 R3La interfaz de la página Proceso del Explorador de ejecución ha sido modificada y muestra información diferente:

La lista de procesos es ahora similar a la Página Procesos de la ventana Administración de 4D Server.

Los valores de ID, nombre, estado y hora se ofrecen sin cambio en comparación con versiones anteriores. La siguiente informaciónha sido modificada:

CPU: la vista gráfica ya no está disponible. Un degradado de color rojo en el fondo indica el nivel de actividad de un proceso.Cada proceso también es identificado por un icono, cuyo color y forma indican el tipo de proceso:

Servidor de aplicaciones

Servidor SQL

Servidor DB4D Server (motor de base)

Servidor web

Servidor SOAP

Proceso de cliente 4D protegido (proceso de desarrollo de un 4D conectado)Proceso de cliente 4D principal (proceso principal de un 4D conectado; proceso colaborativo, equivalente en elservidor del proceso creado en el equipo cliente)Proceso base de cliente 4D (proceso paralelo a un proceso cliente 4D; proceso preemptive responsable paracontrolar el proceso principal cliente 4D correspondiente)Proceso Spare (anterior o futuro "proceso base cliente 4D")

Proceso 4D client (proceso corriendo en el 4D conectado)

Procedimiento almacenado (proceso lanzado por 4D conectado y corriendo en el servidor)

Web method (lanzado por 4DACTION por ejemplo)

Método SOAP (lanzado por un servicio web)

Método SQL (lanzado por una petición SQL)La frecuencia de refrescamiento puede definirse utilizando un menú contextual (clic derecho en la línea):

La barra de herramientas en la parte inferior de la página también se ha actualizado. El botón "Opciones" (con una lista desplegable)que se encuentra en las versiones anteriores ha sido sustituido por tres botones separados:

Estos botones afectan la selección de tareas. Ahoara puede seleccionar varias tareas simultáneamente (Mayús+clic para una- 15 -

Page 16: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

selección continua y Comando/Ctrl+clic para una selección discontinua).

Conteo de registros bloqueados

Introducido en 4D v14 R4El conteo de registros bloqueados para cada tabla ahora se muestra en el panel Seguimiento del Explorador de ejecución y en eldepurador 4D. Esta información está disponible en 4D mono puesto y 4D Server.Depurador 4D:

Valores de los objetos del formulario actual

Introducido en 4D v14 R4La nueva lista Valores del formulario actual está disponible en el depurador y en el Explorador de ejecución. Esta lista contiene elnombre de cada objeto dinámico incluido en la formulario actual, así como el valor de su variable asociada:

Algunos objetos, tales como los list box arrays, pueden estar presentes como dos elementos distintos (la variable del objeto en sí y sufuente de datos).Esta nueva lista es particularmente útil cuando sus formularios utilizan variables dinámicas intensivamente: es fácil de identificar lasvariables dinámicas a través de los nombres de objetos de formulario.

En las versiones anteriores de 4D, esta información se puede encontrar en la lista Variables/Proceso, donde se hace referencia a lasvariables dinámicas a través de su nombre interno (por ejemplo, $form.9.8). Las variables dinámicas ya no se muestran en esta lista;sólo se pueden leer a través de la lista Valores del formulario actual. Aún puede mostrar el nombre interno de las variablesdinámicas seleccionando el comando Mostrar tipos en el menú contextual:

- 16 -

Page 17: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

Los nombres de las variables dinámicas son de la forma "$form.4B9.42":

- 17 -

Page 18: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

Editor de búsquedas

Búsquedas predefinidas

El editor de búsquedas de 4D v15 soporta búsquedas predefinidas. Al igual que una búsqueda estándar guardada, una búsquedapredefinida contiene una definición de búsqueda completa, incluyendo todos los criterios, y se puede cargar en el editor de consultasen cualquier momento. Las búsquedas predefinidas se pueden anidar en aplicaciones desplegadas y se listan directamente en unnuevo sub-menú del editor de búsquedas.Para definir una búsqueda predefinida:

1. Cree una subcarpeta "Búsquedas" en la carpeta "Resources" de su base.2. Añada todos los archivos de búsqueda guardados (.4df) en esta carpeta que se utilizará como búsquedas predefinidas:

Cuando al menos un archivo de búsqueda .4df asociado a la tabla actual se encuentra en la carpeta Resources/Queries, un nuevoelemento Cargar> se agrega al final del menú Editar del editor de búsquedas, dando acceso a todas las búsquedas predefinidascomo elementos del submenú:

La selección de un elemento del submenú cargar la búsqueda correspondiente en el editor de búsquedas.Recordatorio: sólo los archivos de búsqueda relacionados con la tabla actual se muestran en el submenú.

Adaptación para la versión Japonesa

El editor de búsquedas se ha actualizado específicamente para el manejo de búsquedas en japonés con más precisión. Enparticular, un orden específico se aplica a los criterios y búsquedas recientes.Estos cambios sólo se refieren a la versión japonesa de 4D.

- 18 -

Page 19: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

Archivo de datos por defecto en aplicaciones fusionadas

La gestión de un archivo de datos por defecto en las aplicaciones fusionadas (aplicaciones monopuesto o cliente-servidor) se hamodificado en 4D v15:

Ahora los desarrolladores pueden definir un "archivo de datos por defecto" en la etapa de construcción de la aplicación.Cuando no se encuentra un archivo de datos, si se detecta un "archivo de datos por defecto", se abre automáticamente ensilencio en modo de sólo lectura por 4D.

Estas nuevas funcionalidades dan a los desarrolladores un mejor control sobre la creación y/o apertura de los archivos de datosdurante el lanzamiento inicial de una aplicación fusionada. Más específicamente, los siguientes casos se cubren:

Evitar la visualización de la de diálogo de apertura de archivo de datos de 4D durante el lanzamiento de una nueva aplicaciónfusionada o actualizada. Puede detectar, por ejemplo, en el método base On Startup, que el archivo de datos predeterminadose ha abierto y así ejecutar su propio código y/o cajas de diálogo para crear o seleccionar un archivo de datos local.Permitir la distribución de aplicaciones fusionadas con datos de sólo lectura (por ejemplo, para aplicaciones de demostración).

Definir una carpeta de datos por defecto

Ahora 4D v15 ofrece una manera sencilla para anidar un archivo de datos por defecto en una aplicación fusionada, por lo que laaplicación puede instalarse o actualizarse en las máquinas de los usuarios finales sin necesidad de utilizar una caja de diálogoadicional. Para definir un archivo de datos por defecto::

El desarrollador debe ofrecer un archivo de datos por defecto (llamado "Default.4DD") y guárdarlo en una carpeta especifica(llamada "Default Data") dentro del paquete de la base (4dbase). Este archivo por defecto debe ser entregado junto con todoslos demás archivos necesarios, dependiendo de la configuración de la base: index (.4DIndx), blobs externos, journal, etc. Esresponsabilidad del desarrollador ofrecer archivos de datos por defecto válidos. Sin embargo, note que, dado que el archivo dedatos por defecto se abre en modo de sólo lectura, se recomienda desactivar la opción "Usar archivo de registro" en el archivode estructura original antes de crear el archivo de datos.Cuando se crea la aplicación, la carpeta de datos predeterminada está integrada en la aplicación fusionada por el proceso decreación de la aplicación. Todos los archivos dentro de esta carpeta de datos predeterminada también están anidados.

El siguiente gráfico ilustra esta nueva funcionalidad:

Cuando el archivo de datos por defecto se detecta al primer lanzamiento, se abrió silenciosamente en modo de sólo lectura, lo que lepermite ejecutar cualquier operación personalizados que no modifican el archivo de datos en sí.

Nueva secuencia de apertura

Cuando se lanza una aplicación fusionada por primera vez, 4D intenta seleccionar un archivo de datos válido. En las versionesanteriores, si ningún archivo de datos por defecto se entregaba (mismo nombre y misma ubicación que el archivo .4dc), se mostraráuna caja de diálogo estándar de selección del archivo de datos (pidiendo al usuario crear un archivo de datos en la carpetaAplicación).En 4D v15, un nuevo paso se ha añadido a la secuencia de apertura, lo que permite a los desarrolladores tomar ventaja de la nuevafunción de carpeta de datos por defecto (ver arriba). En el paso 2, la aplicación se abre ahora sin ninguna caja de diálogo estándar"Abrir archivo de datos" y los desarrolladores pueden ejecutar código personalizado.La nueva secuencia de apertura para el lanzamiento de una aplicación fusionada es:

1. 4D intenta abrir el último archivo de datos abierto. 2. Si no lo encuentra, 4D intenta abrir el archivo de datos en una carpeta de datos predeterminada junto al archivo .4dc en

modo de sólo lectura (nuevo en 4D v15).3. Si no lo encuentra, 4D intenta abrir el archivo de datos predeterminado junto al archivo de estructura con el mismo nombre.

- 19 -

Page 20: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

4. Si no lo encuentra, 4D muestra la caja de diálogo estándar "Abrir archivo de datos".

- 20 -

Page 21: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

Lenguaje

WEB GET OPTION y WEB SET OPTION Application version Comandos obsoletos renombrados Comandos XSLT obsoletos DELAY PROCESS Etiquetas de transformación 4D FORM GET OBJECTS FORM GET PROPERTIES GET ACTIVITY SNAPSHOT Get database parameter y SET DATABASE PARAMETER GET FIELD PROPERTIES Get pointer Is licence available LDAP List box, crear columnas con variables dinámicas List box, utilizar arrays objeto en las columnas (4D View Pro) MAXIMIZE WINDOW METHOD GET CODE y METHOD SET CODE Números reales, reducción de números de dígitos significativos OBJECT GET COORDINATES On Scroll form event OPEN URL (nuevo nombre de OPEN WEB URL) PROCESS 4D TAGS QR Get text property y QR SET TEXT PROPERTY RESOLVE POINTER Subrecords conversion Toolbar form windows TRANSFORM PICTURE WA GET PREFERENCE y WA SET PREFERENCE WEB SET HTTP HEADER Clickcount EXPORT STRUCTURE Find in sorted array Get database measures Get locked records info IMPORT STRUCTURE LISTBOX GET CELL COORDINATES METHOD GET ATTRIBUTES METHOD SET ATTRIBUTES MOBILE Return selection OBJECT Get corner radius OBJECT SET CORNER RADIUS OPEN DATABASE QUERY BY ATTRIBUTE WEB Is server running

- 21 -

Page 22: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

WEB GET OPTION y WEB SET OPTION

WEB GET OPTION ( selector ; valor ) WEB SET OPTION ( selector ; valor )

Descripción

Originalmente introducido en 4D v14 R3Un nuevo valor está disponible para el parámetro selector para los comandos WEB GET OPTION y WEB SET OPTION:

Constante Tipo ValorWeb Session enable IP address validation Entero largo 83

Alcance: servidor web localSe conserva entre dos sesiones: NoDescripción:Permite desactivar o activar la validación de direcciones IP para las cookies de sesión. Por razones deseguridad, por defecto el servidor Web de 4D verifica la dirección IP de cada petición que contiene una cookie de sesión yrechaza la petición si no coincide con la dirección IP utilizada para crear la cookie. En algunas aplicaciones específicas, esposible que desee desactivar esta validación y aceptar la cookie de sesión, incluso si las direcciones IP no coinciden. Porejemplo, cuando los dispositivos móviles cambian entre redes WiFi y 3G/4G, su IP cambia. En este caso, puede pasar 0 enesta opción para permitir que los clientes puedan seguir utilizando sus sesiones Web, incluso cuando cambian las direccionesIP. Tenga en cuenta que esta configuración reducirá los niveles de seguridad de la aplicación. Cuando está definido, este parámetro es efectivo inmediatamente (no es necesario reiniciar el servidor HTTP).Valores posibles: 0 (desactivado) o 1 (activado)Valor por defecto: 1 (las direcciones IP se verifican)

Descripción

Una nueva constante está disponible en 4D v15 para el parámetro selector: Web debug log (84).Este selector le permite obtener o definir el estado del nuevo archivo de historial de peticiones HTTP del servidor Web 4D. Cuandose activa, este archivo, llamado "HTTPDebugLog_nn.txt", se almacena en la carpeta "Logs" de la aplicación (nn es el número dearchivo). Es útil para problemas de depuración relacionados con el servidor Web. Registra cada petición y cada respuesta en modoraw. Todas las peticiones, incluyendo encabezados, se registran; opcionalmente, es posible registrar los cuerpos de las peticiones.Cuando se pasa Web debug log en selector, el parámetro valor puede tener diferentes valores, en función de la información aregistrar. Las siguientes nuevas constantes están disponibles en el tema "Web Server":

Constante (valor) Tipo Descripción

wdl disable (0) Enterolargo El archivo de historial de peticiones HTTP está desactivado

wdl enable without body(1)

Enterolargo

El archivo de historial de peticiones HTTP está activado sin los cuerpos (el tamaño de loscuerpos se proporciona en este caso)

wdl enable withresponse body (3)

Enterolargo

El archivo de historial de peticiones HTTP está eactivado con los cuerpos de la in responseonly

wdl enable with requestbody (5)

Enterolargo

El archivo de historial de peticiones HTTP está activado con los cuerpos de la con el cuerpode la respuesta únicamente

wdl enable with all bodyparts (7)

Enterolargo

El archivo de historial de peticiones HTTP está activado con los cuerpos de la petición y larespuesta

Nota: el archivo de historial de peticiones HTTP sólo se puede activar o desactivar utilizando el comando WEB SET OPTION.

Ejemplo 1

// Desactivación de la validación de la dirección IP WEB SET OPTION(Web session enable IP address validation;0) ... // código específico // Validar las direcciones IP WEB SET OPTION(Web session enable IP address validation;1)

Ejemplo 2 - 22 -

Page 23: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

La activación del archivo de historial de depuración de las peticiones HTTP sin las partes body:

WEB SET OPTION(Web debug log;wdl enable without body)

Una entrada registrada se ve así:

# REQUEST# SocketID: 1592# PeerIP: 127.0.0.1# PeerPort: 54912# TimeStamp: 39089388GET /4DWEBTEST HTTP/1.1Connection: CloseHost: 127.0.0.1User-Agent: 4D_HTTP_Client/0.0.0.0

# RESPONSE# SocketID: 1592# PeerIP: 127.0.0.1# PeerPort: 54912# TimeStamp: 39089389 (tiempo transcurrido: 1 minuto)HTTP/1.1 200 OKAccept-Ranges: bytesConnection: closeContent-Length: 3555Content-Type: text/plain; charset=UTF-8Date: Tue, 20 Jan 2015 10:51:29 GMTExpires: Tue, 20 Jan 2015 10:51:29 GMTPragma: no-cacheServer: 4D/14.6.0

[Body Size: 3555]

- 23 -

Page 24: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

Application version

Application version {( buildNum {; *} )} -> Resultado de la función

Descripción

Introducido originalmente en 4D v14 R2

Para soportar los nuevos lanzamientos "R" de 4D, los valores devueltos por el comando Application version (tema "Entorno 4D")se han actualizado.Básicamente, en el caso de un lanzamiento "R", el número de actualización será el número "R" y el número de revisión siempre será"0". Este principio se utilizará para números de versiones largos y cortos.Ejemplo para un número de versión corto:

value:=Application version // número de la versión corto

Versiones Valor devuelto4D v14 R2 "1420"4D v14 R3 "1430"4D v14.1 "1401" Primera revisión "bug fix" de 4D v144D v14.2 "1402" Segunda revisión "bug fix" de 4D v14

Ejemplo para un número de versión larga:

value:=Application version(*) // número de la versión largo

Versiones Valor devuelto4D v14 beta R2 "B0011420"4D v14 final R3 "F0011430"4D v14.1 beta "B0011401"

Ejemplo

Usted desea utilizar el valor de la versión corta de la aplicación devuelto por el comando para mostrar el nombre lanzamiento de laaplicación 4D. Puede escribir:

C_LONGINT($Lon_build) C_TEXT($Txt_info;$Txt_major;$Txt_minor;$Txt_release;$Txt_version) $Txt_version:=Application version($Lon_build) $Txt_major:=$Txt_version[[1]]+$Txt_version[[2]] //número de versión, por ejemplo 14 $Txt_release:=$Txt_version[[3]] //Rx $Txt_minor:=$Txt_version[[4]] //.x $Txt_info:="4D v"+$Txt_major If($Txt_release="0") //4D v14.x $Txt_info:=$Txt_info+Choose($Txt_minor#"0";"."+$Txt_minor;"") Else //4D v14 Rx $Txt_info:=$Txt_info+" R"+$Txt_release End if

- 24 -

Page 25: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

Comandos obsoletos renombrados

Para mayor claridad en 4D v15, cada comando obsoleto tiene un prefijo "_o_", si este no era ya el caso.Como los comandos obsoletos ya no están disponibles en las listas 4D (ver la sección Comandos obsoletos ocultos), no podráseleccionarlos. Sólo serán renombrados en el código existente.La siguiente tabla muestra los comandos obsoletos renombrados en 4D v15 y por lo tanto retirados de las listas 4D:

- 25 -

Page 26: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

Nombre anterior Nuevo nombre en 4D v15ADD DATA SEGMENT _o_ADD DATA SEGMENTADD SUBRECORD _o_ADD SUBRECORDALL SUBRECORDS _o_ALL SUBRECORDSAPPLY TO SUBSELECTION _o_APPLY TO SUBSELECTIONARRAY STRING _o_ARRAY STRINGARRAY TO STRING LIST _o_ARRAY TO STRING LISTBefore subselection _o_Before subselectionC_STRING _o_C_STRINGConvert case _o_Convert caseCreate resource file _o_Create resource fileCREATE SUBRECORD _o_CREATE SUBRECORDDATA SEGMENT LIST _o_DATA SEGMENT LISTDELETE RESOURCE _o_DELETE RESOURCEDELETE SUBRECORD _o_DELETE SUBRECORDDISABLE BUTTON _o_DISABLE BUTTONENABLE BUTTON _o_ENABLE BUTTONEnd subselection _o_End subselectionFIRST SUBRECORD _o_FIRST SUBRECORDFont name _o_Font nameFont number _o_Font numberGet component resource ID _o_Get component resource IDGet platform interface _o_Get platform interfaceINVERT BACKGROUND _o_INVERT BACKGROUNDISO to Mac _o_ISO to MacLAST SUBRECORD _o_LAST SUBRECORDMac to ISO _o_Mac to ISOMac to Win _o_Mac to WinMODIFY SUBRECORD _o_MODIFY SUBRECORDNEXT SUBRECORD _o_NEXT SUBRECORDORDER SUBRECORDS BY _o_ORDER SUBRECORDS BYPICTURE TYPE LIST _o_PICTURE TYPE LISTPREVIOUS SUBRECORD _o_PREVIOUS SUBRECORDQT COMPRESS PICTURE _o_QT COMPRESS PICTUREQT COMPRESS PICTURE FILE _o_QT COMPRESS PICTURE FILEQT LOAD COMPRESS PICTURE FROM FILE _o_QT LOAD COMPRESS PICTURE FROM FILEQUERY SUBRECORDS _o_QUERY SUBRECORDSRecords in subselection _o_Records in subselectionREDRAW LIST _o_REDRAW LISTSAVE PICTURE TO FILE _o_SAVE PICTURE TO FILESET PICTURE RESOURCE _o_SET PICTURE RESOURCESET PLATFORM INTERFACE _o_SET PLATFORM INTERFACESET RESOURCE _o_SET RESOURCESET RESOURCE NAME _o_SET RESOURCE NAMESET RESOURCE PROPERTIES _o_SET RESOURCE PROPERTIESSET STRING RESOURCE _o_SET STRING RESOURCESET TEXT RESOURCE _o_SET TEXT RESOURCEUSE EXTERNAL DATABASE _o_USE EXTERNAL DATABASEUSE INTERNAL DATABASE _o_USE INTERNAL DATABASEWin to Mac _o_Win to Mac

Comandos XSLT Los comandos XSLT han sido renombrados en 4D v14 R4:

Nombre anterior Nuevo nombre 4D v15XSLT APPLY TRANSFORMATION _o_XSLT APPLY TRANSFORMATIONXSLT GET ERROR _o_XSLT GET ERRORXSLT SET PARAMETER _o_XSLT SET PARAMETER

Para más información, por favor consulte la sección Comandos XSLT obsoletos.

Comandos 4D Pack

- 26 -

Page 27: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

Varios comandos 4D Pack también están en desuso desde 4D v14 R5:Nombre anterior Nuevo nombreAP FCLOSE _o_AP FCLOSEAP fopen _o_AP fopenAP FPRINT _o_AP FPRINTAP fread _o_AP freadAP Save BMP 8 bits _o_AP Save BMP 8 bitsAP Add table and fields _o_AP Add table and fieldsAP Create relation _o_AP Create relationAP Get file MD5 digest _o_AP Get file MD5 digestAP ShellExecute _o_AP ShellExecute

Para más información, consulte la sección Comandos obsoletos renombrados.

Comandos que ya no son obsoletos

Por otra parte, ciertos comandos que fueron declarados previamente obsoletos en la documentación, pero que no cumplían con ladefinición expuesta anteriormente, han sido "reintegrados".

Estos son los comandos de interés limitado ahora, porque corresponden a los antiguos modos de programación o se puedensustituir por un código más eficiente, pero su continuidad no está en tela de juicio:

ActivatedOutside callAfterBeforeDeactivatedIn headerIn footerIn breakModifiedDocument type

- 27 -

Page 28: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

Comandos XSLT obsoletos

Originalmente introducido en 4D v14 R4Los comandos de procesamiento XSLT están en desuso y se les ha añadido un prefijo en consecuencia:

Nombre anterior Nuevo nombre 4D v15XSLT APPLY TRANSFORMATION _o_XSLT APPLY TRANSFORMATIONXSLT GET ERROR _o_XSLT GET ERRORXSLT SET PARAMETER _o_XSLT SET PARAMETER

Por razones de compatibilidad, las transformaciones XSL se siguen soportando en 4D, pero su uso ahora no se recomienda.El uso de tecnología XSLT se eliminará en futuras versiones de 4D.Nota 4D Server 64-bit OS X: El XSLT no está disponible con 4D Server 64 bits para OS X. En consecuencia, la ejecución de unode estos comandos de esta aplicación generará el error 33 "Método o función no implementado".Para remplazar la tecnología XSLT en sus bases de datos, 4 ofrece dos soluciones:

utilizar las funciones equivalentes del módulo PHP libxslt, instalado en 4D desde la versión 14.2. 4D ha producido undocumento específico para ayudarle a utilizar el XSL de PHP como un reemplazo de los comandos XSLT de 4D: Descargar eldocumento técnico XSLT con PHP (PDF)

utilizar las nuevas posibilidades ofrecidas por el comando PROCESS 4D TAGS, cuyas capacidades se han ampliado demanera significativa.

- 28 -

Page 29: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

DELAY PROCESS

DELAY PROCESS (proceso ; duracion )

Parámetro Tipo Descripciónproceso Entero largo -> Número de procesoduracion Real -> Duración expresada en tic

Descripción

Introducido originalmente en 4D v14 R3El comando DELAY PROCESS ahora acepta un parámetro duracion de tipo Real (en versiones anteriores, se esperaba un valorEntero largo).

La unidad de tiempo es aún el tic (1 tic = 1/60avo de segundo). Sin embargo, ahora se puede retrasar la ejecución de un proceso poruna duración menor a un tic. Por ejemplo, si pasa de 0.5 en duracion, el proceso se retrasará por 1/2 tic, es decir, 1/120avo desegundo.

- 29 -

Page 30: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

Etiquetas de transformación 4D

Introducido originalmente en 4D v14 R4Las etiquetas de transformación 4D (anteriormente llamadas Etiquetas HTML 4D) se han extendido:

una nueva etiqueta 4DEVAL se ha añadido,la etiqueta 4DLOOP ahora es compatible con cualquier expresión 4D o con un puntero a un array como parámetro.

Nota: el comando PROCESS 4D TAGS se ha extendido también en 4D v14 R4. Para obtener más información, consulte la secciónPROCESS 4D TAGS.

4DEVAL (nueva etiqueta)

Sintaxis: <!--#4DEVAL VarName--> o <!--#4DEVAL 4DExpression-->La nueva etiqueta 4DEVAL le permite evaluar una variable o una expresión 4D.Al igual que la etiqueta 4DHTML existente, 4DEVAL no escapa los caracteres HTML al devolver texto. Sin embargo, a diferencia de4DHTML o 4DTEXT, 4DEVAL le permite ejecutar toda instrucción 4D válida, incluyendo asignaciones y expresiones que nodevuelven ningún valor.Por ejemplo, puede ejecutar:

$input:="<!--#4DEVAL a:=42-->" //assignment $input:=$input+"<!--#4DEVAL a+1-->" //calculation PROCESS 4D TAGS($input;$output) //$output = "43"

Puede utilizar los comandos o funciones 4D directamente como expresiones. En este caso, es una buena idea insertar el código deescape del número de comando en el parámetro Expresion4D. De esta manera la expresión se evaluará correctamente sin importarla versión del lenguaje 4D utilizada, o si el nombre del comando cambia en un lanzamiento 4D futuro. La sintaxis a utilizar es"<nombre_comando>:C<número_comando>. Por ejemplo, para llamar Current time Current time, escriba "Current time:C178".

Nota: los números de los comandos se pueden encontrar en la página Comandos del Explorador:

En caso de error de evaluación, el texto insertado será de la forma: “<!--#4DEVAL expression--> : ## error # error code”.

Nota: la ejecución de un método 4D vía un 4DEVAL desde una petición Web requiere que la opción "Disponible a través de lasetiquetas 4D y URLs (4DACTION...)" esté seleccionada a en las propiedades del método. Para obtener más información, consulte lasección Seguridad de las conexiones.

4DLOOP

La etiqueta 4DLOOP ahora acepta dos nuevos tipos de condiciones (además de tabla, array y método): una expresión 4D y unpuntero de array.

<!--#4DLOOP 4DExpression-->Con esta sintaxis, la etiqueta 4DLOOP hará un bucle en tanto que la expresión 4D devuelve True. La expresión puede ser

- 30 -

Page 31: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

cualquier expresión booleana válida y debe contener una parte variable a evaluar en cada bucle para evitar bucles infinitos.

Por ejemplo, el siguiente código:

<!--#4DEVAL $i:=0--> <!--#4DLOOP ($i<4)--> <!--#4DEVAL $i--> <!--#4DEVAL $i:=$i+1--> <!--#4DENDLOOP-->

producirá:

0123

<!--#4DLOOP pointerArray-->En este caso, la etiqueta 4DLOOP funcionará como lo hace con un array: se hace un bucle para cada elemento del array. Elelemento actual del array se incrementa cada vez que la porción de código se repite.

Esta sintaxis es útil cuando se pasa un puntero de array como parámetro al comando PROCESS 4D TAGS.Ejemplo:

ARRAY TEXT($array;2) $array{1}:="hello" $array{2}:="world" $input:="<!--#4DEVAL $1-->" $input:=$input+"<!--#4DLOOP $2-->" $input:=$input+"<!--#4DEVAL $2->{$2->}--> " $input:=$input+"<!--#4DENDLOOP-->" PROCESS 4D TAGS($input;$output;"elements = ";->$array) // $output = "elements = hello world"

- 31 -

Page 32: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

FORM GET OBJECTS

FORM GET OBJECTS (arrayObjetos{;arrayVariables{;arrayPag}} {; * | opcionPag} )

Parámetro Tipo DescripciónarrayObjetos Array cadena <- Nombre de objetos del formulario arrayVariables Array puntero <- Punteros a las variables o campos asociados con objetos arrayPag Array entero <- Número de página de cada objeto * | opcionPag Operador | Entero largo -> Si se pasa * = reducir a la página actual o

1=Página actual del formulario, 2=Todas las páginas, 4=Páginas heredadas

Descripción

Introducido originalmente en 4D v14 R2El comando FORM GET OBJECTS (tema "Formularios") acepta el nuevo parámetro opcional opcionPag que le permite designarla o las parte(s) del formulario desde donde obtener los objetos.

Por defecto, si el parámetro opcionPag se omite (así como el parámetro *), los objetos de todas las páginas, incluyendo los objetosheredados, se devuelven (como en las versiones anteriores de 4D).

Para reducir el alcance del comando, puede pasar un valor en opcionPag. Puede pasar una (o una combinación) de las siguientesconstantes, que se encuentran en el tema "Objetos de formulario (Acceso)":

Constante Tipo Valor DescripciónForm currentpage

Enterolargo 1 devuelve todos los objetos de la página actual, incluyendo la página 0, excluyendo los

objetos heredados

Form all pages Enterolargo 2 devuelve todos los objetos de todas las páginas, sin contar los objetos heredados

Form inherited Enterolargo 4[ devuelve únicamente los objetos heredados

Nota: pasar el parámetro * es equivalente a pasar la página actual Form current page+Form inherited. La sintaxis utilizando elparámetro * ahora es obsoleta y no debe utilizarse.

Ejemplo 1

Usted quiere recibir información sobre todas las páginas, incluyendo objetos del formulario heredado (si los hay):

//Formulario abierto FORM GET OBJECTS(arrayObjetos;arrayVariables;arrayPaginas)

O:

//Formulario cargado FORM LOAD([Tabla1];"MiForm") FORM GET OBJECTS(arrayObjetos;arrayVariables;arrayPaginas;Form all pages+Form inherited)

Ejemplo 2

Usted desea obtener los objetos de la página actual del formulario cargado, incluyendo la página 0 del formulario y los objetos de losformularios heredados (si los hay):

FORM LOAD("MiForm") FORM GOTO PAGE(2) FORM GET OBJECTS(arrayObjetos;arrayVariables;arrayPag;Formulario página actual+Formularioheredado)

- 32 -

Page 33: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

Ejemplo 3

Quiere obtener información sobre todos los objetos en el formulario heredado (si los hay). Si no hay formularios heredados, los arraysse devolverán vacíos.

FORM LOAD("MiForm") FORM GET OBJECTS(arrayObjetos;arrayVariables;arrayPag;Formulario heredado)

Ejemplo 4

Usted quiere obtener los objetos de la página 4, incluyendo los de la página 0, pero sin los objetos de formularios heredados (si loshay):

FORM LOAD([Tabla1];"MiForm") FORM GOTO PAGE(4) FORM GET OBJECTS(arrayObjetos;arrayVariables;arrayPag;Formulario página actual)

Ejemplo 5

Usted quiere obtener información los objetos de todas las páginas, pero sin objetos de formulario heredado (si los hubiera):

FORM LOAD([Tabla1];"MiForm") FORM GET OBJECTS(arrayObjetos;arrayVariables;arrayPaginas;Form todas las páginas)

- 33 -

Page 34: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

FORM GET PROPERTIES

FORM GET PROPERTIES ( {{laTabla{;nomForm ;} ancho ; alto {; numPag {; anchoFijo {; altoFijo {; titulo}}}} )

Originalmente introducido en 4D v14 R2El parámetro nomForm ahora es opcional: si el parámetro se omite, el comando se aplica al formulario actual, cargado con elcomando FORM LOAD.Referencia: FORM GET PROPERTIES

- 34 -

Page 35: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

GET ACTIVITY SNAPSHOT

GET ACTIVITY SNAPSHOT ( arrActividades | arrUUID ; arrInicio; arrDuracion; arrInfo {; arrDetalles}{; *} )

Parámetro Tipo DescripciónarrActividades | arrUUID Array objeto, Array texto <- Descripción completa de las operaciones (array objeto) o

UUIDs de las operaciones (array texto) arrInicio Array Texto <- Horas de inicio de las operaciones arrDuracion Array Entero largo <- Duración de las operaciones en segundos arrInfo Array Texto <- Descripción arrDetalles Array objeto <- Detalles del contexto y sub-operaciones (si las hay)* Operador -> Si se pasa = Leer actividad del servidor

Nuevas propiedades

Introducido originalmente en 4D v14 R3Este comando devuelve información adicional, en relación con la evolución de la página Real Time Monitor (RTM) de la ventana deadministración de 4D Server (ver Página Monitor en tiempo real (MTR) ).

La información adicional se devuelve en dos nuevas propiedades: dbContextInfo y dbOperationDetails. Estas propiedades estándisponibles para ambas sintaxis.

GET ACTIVITY SNAPSHOT(arrActivites{; *}) Con esta sintaxis, las nuevas propiedades están disponibles desde en el primer nivel del objeto arrActividades:

[ { "message":"xxx", "maxValue":12321, "currentValue":63212, "interruptible:0, "remote":0, "uuid":"deadbeef", "taskId":xxx, "startTime":"2014-03-20 13:37:00:123", "duration":92132, "dbContextInfo":{ "task_id": xxx, "user_name": myName, "host_name": HAL, "task_name": "CreateIndexLocal", "client_uid": "DE4DB33F33F" "user4d_id ": 1, "client_version ": 123456 }, "dbOperationDetails":{ table: "myTable" field: "Field_1" }, "subOperations":[...] },...]

GET ACTIVITY SNAPSHOT(arrUUID;arrStart;arrDuration;arrInfo{;arrDetails}{; *}) Con esta sintaxis, las nuevas propiedades se encuentran disponibles en el último parámetro, renombrado arrDetalles para mayorclaridad. La estructura de este array es ahora:

[ {

- 35 -

Page 36: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

"dbContextInfo":{...} //ver abajo "dbOperationDetails":{...} //ver abajo "subOperations":[...] },...]

Descripción

dbContextInfoEsta propiedad es un objeto que contiene información cuando una operación es tratada por el motor de la base de datos. Tiene lassiguientes propiedades:

host_name (cadena): nombre del host que inició la operaciónuser_name (cadena): nombre del usuario 4D cuya sesión inició la operacióntask_name (cadena): nombre del proceso que inició la operacióntask_id (número): identificación del proceso que inició la operaciónclient_uid (cadena): opcional, uuid del cliente que inició la operaciónis_remote_context (Booleano, 0 ó 1): opcional, indica si la operación de base de datos fue iniciada por un cliente (valor 1) opor el servidor a través de un procedimiento almacenado (valor 0)user4d_id (número): identificación del usuario 4D actual del lado del clienteclient_version (cadena): cuatro dígitos representan la versión del motor 4D de la aplicación, tal como los devueltos por elcomando Application version.

client_uid y is_remote_context sólo están disponibles en modo cliente/servidor. client_uid sólo se devuelve si la operación de basede datos se ha iniciado en un equipo cliente.dbOperationDetailsEsta propiedad sólo se devuelve si la operación utiliza el motor de base de datos (este es el caso por ejemplo para las búsquedasy/u ordenaciones). Es un objeto que define la información de actividad específica. Las propiedades devueltas dependen de laoperación de la base de datos que se está ejecutando. Incluyen, por ejemplo:

table (cadena): nombre de la tabla involucrada en la operaciónfield (cadena): nombre del campo implicado en la operaciónqueryPlan (cadena): plan de búsqueda definido para la operación...

- 36 -

Page 37: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

Get database parameter y SET DATABASE PARAMETER

Get database parameter ( {laTabla ;} selector {; valorAlfa} ) -> Resultado

SET DATABASE PARAMETER ( {laTabla ;} selector ; valor )

Descripción

Un nuevo parámetro selector está disponible para los comandos Get database parameter y SET DATABASE PARAMETER:Constante Tipo ValorUse legacy network layer Entero largo 87

Alcance: 4D en modo local y 4D Server.Se conserva entre dos sesiones: síDescripción: define u obtiene el estado actual de la capa de red legacy para las conexiones cliente/servidor. La capa de redlegacy está en desuso a partir de 4D v14 R5 y debe ser reemplazada progresivamente en sus aplicaciones con la capa de redServerNet. ServerNet será necesario en las próximas versiones de 4D para beneficiarse de las futuras evoluciones de la red.Por razones de compatibilidad, la capa de red legacy aún se soporta para permitir una transición sin problemas para lasaplicaciones existentes; (se usa por defecto en aplicaciones convertidas de una versión anterior a v14 R5). Pase 1 en esteparámetro para utilizar la capa de red legacy (y desactivar ServerNet) para las conexiones cliente/servidor, y pase 0 paradeshabilitar la red legacy (y utilizar ServerNet).Esta propiedad también se puede definir mediante la opción "Usar capa de red legacy" que se encuentra en la página"Compatibilidad" de las Propiedades de la base (ver Nueva capa red ServerNet). En esta sección, también puede encontraruna discusión acerca de la estrategia de migración. Le recomendamos que active ServerNet tan pronto como sea posible.Tendrá que reiniciar la aplicación para que este parámetro sea tenido en cuenta. No está disponible en versión 4D Server v14R5 de 64 bits para OS X, que sólo soporta ServetNet; (siempre devuelve 0).Posibles valores: 0 ó 1 (0 = no utilizan capa legacy, 1 = utilizan capa legacy)Valor por defecto: 0 en bases de datos creadas con 4D v14 R5 o superior, 1 en bases de datos convertidas desde 4D v14R4 o anterior.

Descripción

Originalmente introducido en 4D v14 R3Un nuevo parámetro selector está disponible para los comandos Get database parameter y SET DATABASE PARAMETER:

Constante Tipo ValorSQL Server Port ID Entero largo 88

Alcance: 4D en modo local y 4D Server.Se conserva entre dos sesiones: SíDescripción: define o lee el número del puerto TCP utilizado por el servidor SQL integrado en 4D en modo local y 4D Server.Por defecto, el valor es 19812. El número de puerto TCP también se puede definir en la página "SQL" de la caja de diálogoPropiedades de la base. Cuando se utiliza este selector, la configuración de la base se actualiza respectivamente.Valores posibles: 0 a 65535.Valor por defecto: 19812

Descripción

Originalmente introducido en 4D v14 R5Un nuevo parámetro selector está disponible para los comandos Get database parameter y SET DATABASE PARAMETER:

Constante Tipo ValorUse legacy network layer Entero largo 87

Alcance: 4D en modo local y 4D Server.Se conserva entre dos sesiones: síDescripción: define u obtiene el estado actual de la capa de red legacy para las conexiones cliente/servidor. La capa de redlegacy está en desuso a partir de 4D v14 R5 y debe ser reemplazada progresivamente en sus aplicaciones con la capa de redServerNet. ServerNet será necesario en las próximas versiones de 4D para beneficiarse de las futuras evoluciones de la red.Por razones de compatibilidad, la capa de red legacy aún se soporta para permitir una transición sin problemas para las

- 37 -

Page 38: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

aplicaciones existentes; (se usa por defecto en aplicaciones convertidas de una versión anterior a v14 R5). Pase 1 en esteparámetro para utilizar la capa de red legacy (y desactivar ServerNet) para las conexiones cliente/servidor, y pase 0 paradeshabilitar la red legacy (y utilizar ServerNet).Esta propiedad también se puede definir mediante la opción "Usar capa de red legacy" que se encuentra en la página"Compatibilidad" de las Propiedades de la base (ver Nueva capa de red ServerNet). En esta sección, también puedeencontrar una discusión acerca de la estrategia de migración. Le recomendamos que active ServerNet tan pronto como seaposible.Tendrá que reiniciar la aplicación para que este parámetro sea tenido en cuenta. No está disponible en versión 4D Server de64 bits para OS X, que sólo soporta ServetNet; (siempre devuelve 0).Posibles valores: 0 ó 1 (0 = no utilizan capa legacy, 1 = utilizan capa legacy)Valor por defecto: 0 en bases de datos creadas con 4D v14 R5 o superior, 1 en bases de datos convertidas desde 4D v14R4 o anterior.

- 38 -

Page 39: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

GET FIELD PROPERTIES

GET FIELD PROPERTIES ( ptrCampo | numTabla {; numCampo}; campoTipo {; campoLong {; indexado {; unico {; invisible}}}} )

Descripción

A partir de 4D v15, los campos pueden ser del nuevo tipo Objeto. Para más información, consulte la sección Tipo de campoObjeto.Como resultado, este comando puede devolver un nuevo valor del tema constante "Tipos de campos y variables" en el parámetrotipoCampo:

Constante Tipo ValorIs object Entero largo 38

- 39 -

Page 40: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

Get pointer

Get pointer ( varName ) -> Resultado

Descripción

El comando Get pointer ha sido reescrito para soportar nuevos tipos de puntero en 4D v15 (ver la sección Modo Unicode para losmétodos). Las siguientes modificaciones se deben tener en cuenta:

Los punteros a arrays bidimensionales, incluyendo el uso de expresiones, ahora son soportados:

$pt:=Get pointer("a{1}{2}") //$pt=->a{1}{2} $pt2:=Get pointer("atCities"+"{2}{6}") //$pt2=->atCities{}{6}

Los nombres no válidos para variables ahora producen un error 77 ("Mal nombre de variable"). En versiones anteriores, seaceptaban. Por ejemplo:

$pt:=Get pointer("123") //aceptado en 4D < v15 // rechazado en 4D v15 y versiones posteriores

Los espacios en blanco extraños ahora se soportan:

$pt:=Get pointer(" a ") //aceptado en 4D v15: "->a" // rechazado en 4D < v15

- 40 -

Page 41: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

Is licence available

Is license available {( license )} -> Resultado

Parámetro Tipo Descripciónlicencia Entero largo -> Funcionalidad para la cual probar la validez de la licencia Resultado Booleano <- True si la funcionalidad está disponible, de lo contrario False

Descripción

Introducido originalmente en 4D v14 R3El comando Is licence available acepta dos nuevas constantes (añadidas al tema constante "Is License Available"):

Constante Tipo Valor4D Mobile License Entero largo 8084644394D Mobile Test License Entero largo 808465719

Nota: tres licencias de prueba 4D Mobile se ofrecen por defecto para pruebas con 4D Developer Pro.

- 41 -

Page 42: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

LDAP

4D v15 incluye nuevas funcionalidades LDAP, lo que permite su aplicación 4D conectarse a un directorio de empresa existenteutilizando LDAP. Todos los nuevos comandos LDAP se han añadido a un nuevo tema, llamado LDAP:

Estos nuevos comandos se detallan en la sección "Company Directory (LDAP)" de este manual de actualización.

- 42 -

Page 43: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

List box, crear columnas con variables dinámicas

Originalmente introducido en 4D v14 R3Una nueva funcionalidad en 4D le permite añadir o insertar nuevas columnas dinámicamente en tiempo de ejecución. Con esta nuevafuncionalidad, 4D maneja automáticamente las definiciones de las variables requeridas (columna, pie de página y encabezado).

Por lo tanto, tres comandos 4D se han actualizado:

LISTBOX INSERT COLUMNLISTBOX INSERT COLUMN FORMULALISTBOX DUPLICATE COLUMN

Nueva sintaxis (puntero Nil)

La sintaxis de estos comandos se ha actualizado para manejar creación de variables dinámicas.

LISTBOX INSERT COLUMN ( {* ;} objeto ; posicionCol ; nomCol ; variableCol ; nomEncabezado ; varEncabezado {; nomPie ; varPie})LISTBOX INSERT COLUMN FORMULA ( {* ;} objeto ; posicionCol ; nomCol ; formula ; tipoDatos ; nomEncabezado ; varEncabezado{; nomPie ; varPie} ) LISTBOX DUPLICATE COLUMN ( {* ;} object ; posicionCol ; nomCol ; variableCol ; nomEncabezado ; varEncabezado {; nomPie ;varPie} )

Parámetro Tipo Descripción ...variableCol Array, Campo, Variable, puntero Nil -> Nombre de la variable array de la columna o campo o variable varEncabezado Variable entero o puntero Nil -> Variable del encabezado de la columna...varPie Variable o Nil pointer -> Variable del pie de la columna

Estos comandos ahora aceptan un puntero Nil (->[]) como valor para los parámetros variableCol (si aplica), varEncabezado yvarPie. En este caso, 4D creará las variables requeridas de forma dinámica cuando se ejecutan los comandos (consulte la sección"Variables dinámicas" en el manual de lenguaje 4D para más información).

Note que las variables de encabezado y de pie de página siempre se crean con un tipo específico (respectivamente, entero largo ytexto). Sin embargo, las variables de columna no se puede escribir durante la creación porque el listbox acepta diferentes tipos dearrays para esta variable (array texto, array entero, etc.) por lo que debe establecer el tipo de array manualmente. Por ejemplo:

C_POINTER($NilPtr) LISTBOX INSERT COLUMN(*;"MyListBox";1;"MyNewColumn";$NilPtr;"MyNewHeader";$NilPtr) ColPtr:=OBJECT Get pointer(Object named;"MyNewColumn") ARRAY TEXT(ColPtr->;0) // Reemplace 0 por un valor positivo si se quiere asignar previamente loselementos del array

Es importante hacer esto escribiendo antes de usar comandos como LISTBOX INSERT ROWS para insertar nuevos elementos enel array. O bien, es posible utilizar APPEND TO ARRAY tanto para escribir el array y empezar a insertar elementos al mismo tiempo.

- 43 -

Page 44: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

List box, utilizar arrays objeto en las columnas (4D View Pro)

A partir de 4D v15, las columnas de list box pueden contener arrays de objetos. Como los arrays de objetos pueden contenerdiferentes tipos de datos, esta nueva y poderosa funcionalidad le permite mezclar diferentes tipos de valores en las líneas de unasola columna, y mostrar varios widgets también. Por ejemplo, puede insertar una entrada de texto en la primera fila, una casilla deselección en la segunda, y una lista desplegable en la tercera. Los arrays de objetos también ofrecen acceso a nuevos tipos dewidgets, tales como botones o selectores de colores.El siguiente list box fue diseñado utilizando un array objeto:

Nota sobre las licencias: la capacidad de utilizar arrays de objetos en list boxes es un primer paso para la próxima herramienta"4D View pro" que va a sustituir progresivamente el plug-in 4D View. Esta funcionalidad requiere una licencia 4D View válida. Paramás información, por favor consulte el sitio Web de 4D.

Configurar un columna array de objetos

Para asignar una array de objetos a una columna de list box, sólo tiene que definir el nombre del array de objetos, ya sea en la listade propiedades (campo "Nombre de la variable"), o utilizando el comando LISTBOX INSERT COLUMN al igual que con todacolumna asociada a un array. En la lista de propiedades, ahora puede seleccionar Objeto como "Tipo de variable" para la columna:

Las propiedades estándar relacionadas con coordenadas, tamaño y estilo están disponibles para las columnas de tipo objeto.Puede definirlas utilizando la lista de propiedades o programando los atributos de estilo, color de fuente, color de fondo y visibilidadpara cada línea de columna objeto del list box. Este tipo de columna también se pueden ocultar.Sin embargo, el tema Fuente de datos no está disponible para las columnas objeto de los list box. De hecho, el contenido de cadacelda de la columna se basa en los atributos presentes en el elemento correspondiente del array de objetos. Cada elemento delarray puede definir:

el tipo de valor (obligatorio): texto, color, evento, etc.el valor en sí (opcional): utilizado para la entrada/salida.la visualización de contenido de la celda (opcional): botón, lista, etc.ajustes adicionales (opcional): dependen del tipo de valor.

Para definir estas propiedades, es necesario definir los atributos adecuados en el objeto (los atributos disponibles se listan acontinuación). Por ejemplo, puede escribir "Hello World!" en una columna objeto utilizando este simple código:

ARRAY OBJECT(obColumn;0) // array de columnas C_OBJECT($ob) //primer elemento

- 44 -

Page 45: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

OB SET($ob;"valueType";"text") //define el tipo de valor (obligatorio) OB SET($ob;"value";"Hello World!") //define el valor APPEND TO ARRAY(obColumn;$ob)

Nota: el formato de visualización y los filtros de entrada no se pueden definir para las columnas objeto. Dependen de formaautomática del tipo de valor.

valueType y visualización de los datos

Cuando una columna de list box está asociada a un array de objetos, la visualización, la entrada y la edición de las celdas se basa enel atributo valueType presente en cada elemento del array. Los valores valueType soportados son:

"texto": para un valor texto"real": para un valor numérico que puede incluir separadores como un <espacio>, <.>, o <,>"integer": para un valor entero"boolean": para un valor True/False"color": para definir un color de fondo"event": para mostrar un botón con una etiqueta.

4D utiliza los widgets por defecto en función del valor "valueType" (es decir, un "texto" se muestra como un widget de entrada detexto, un "booleano", como una casilla de selección), pero también están disponibles representaciones alternativas vía las opciones(por ejemplo, un real también puede representarse como un menú desplegable). La siguiente tabla muestra la visualización pordefecto, así como también las alternativas para cada tipo de valor:

valueType Widget por defecto Widgets alternativostext área de entrada de texto menú desplegable (lista obligatoria) o combo box (lista de opciones)

real área de entrada de texto controlada(números y separadores) menú desplegable (lista obligatoria) o combo box (lista de opciones)

integer controlled text input (numbers only) menú desplegable (lista obligatoria) o combo box (lista de opciones) ocasilla de selección de tres estados

boolean casilla de selección menú desplegable (lista obligatoria)color color de fondo textoevent botón con etiqueta

Todos los widgets pueden tener un botón adicional unit toggle button oellipsis button asociado a la celda.

Defina la visualización de la celda y las opciones utilizando los atributos específicos en cada objeto (ver abajo).

Formatos de visualización y filtros de entrada No se puede establecer formatos de visualización o filtros de entrada para columnas objeto de list box. Se definen automáticamentede acuerdo con el tipo de valor. Se enumeran en la siguiente tabla:

Value type Formato por defecto Control de entradatext el mismo que el del objeto sin (no control)real el mismo que el del objeto (utilización del separador decimal del sistema) "0-9", "." y "-"

"0-9" y "." si min>=0integer el mismo que el del objeto "0-9" and "-"

"0-9" si min>=0Boolean casilla de selección N/Acolor N/A N/Aevent N/A N/A

Atributos

Cada elemento del array objeto de objetos es un objeto que puede contener uno o más atributos que definirán el contenido de lacelda y la visualización de datos (ver el ejemplo anterior).

El único atributo obligatorio es "valueType" y sus valores soportados son "text", "real", "integer", "boolean", "color" y "event". Lasiguiente tabla muestra todos los atributos soportados en arrays de objetos de list box, en función del valor "valueType" (cualquierotro atributo se ignora). Los formatos de visualización y ejemplos se muestran a continuación.

- 45 -

Page 46: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

valueType text real integer boolean color eventAtributos Descripciónvalue valor de la celda (entrada o salida) x x xmin valor mínimo x xmax valor máximo x xbehavior valor "threeStates" xrequiredList menú desplegable definido en el objeto x x xchoiceList combo box definido en objeto x x xrequiredListReference RefList 4D, depende del valor de "saveAs" x x xrequiredListName nombre de lista 4D, depende del valor "saveAs" x x xsaveAs "reference" o "value" x x xchoiceListReference RefList 4D, muestra un combo box x x xchoiceListName nombre de lista 4D, muestra un combo box x x xunitList array de X elementos x x xunitReference índice del elemento seleccionado x x xunitsListReference RefList 4D para las unidades x x xunitsListName nombre de lista 4D para las unidades x x xalternateButton añadir un botón alternativo x x x x x

value Los valores de las celdas se almacenan en el atributo "value". Este atributo se utiliza para la entrada y salida. También se puedeutilizar para definir los valores por defecto cuando se utilizan las listas (ver abajo).

Ejemplo:

ARRAY OBJECT(obColumn;0) //column array <p>C_OBJECT($ob1) $entry:="Hello world!" OB SET($ob1;"valueType";"text") OB SET($ob1;"value";$entry) // si el usuario introduce un nuevo valor, $entry contendrá el nuevovalor C_OBJECT($ob2) OB SET($ob2;"valueType";"real") OB SET($ob2;"value";2/3) C_OBJECT($ob3) OB SET($ob3;"valueType";"boolean") OB SET($ob3;"value";True) APPEND TO ARRAY(obColumn;$ob1) APPEND TO ARRAY(obColumn;$ob2) APPEND TO ARRAY(obColumn;$ob3)

Nota: el valor Null es soportado y resulta en una celda vacía.

min y max Cuando "valueType" es "real" o "integer", el objeto acepta también los atributos min y max con los valores apropiados (los valoresdeben ser del mismo tipo que el valueType).Estos atributos se pueden utilizar para controlar el rango de valores de entrada. Cuando se valida una celda (cuando pierde el foco),si el valor de entrada es menor que el valor min o mayor que el valor max, entonces se rechaza. En este caso, el valor anterior semantiene y un mensaje de ayuda muestra una explicación.Ejemplo:

C_OBJECT($ob3) $entry3:=2015 OB SET($ob3;"valueType";"integer") OB SET($ob3;"value";$entry3) OB SET($ob3;"min";2000) OB SET($ob3;"max";3000)

- 46 -

Page 47: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

behavior El atributo behavior ofrece variaciones de la representación estándar de los valores. En 4D v15, una sola variación es posible:

Atributo Valordisponible valueType(s) Descripción

behavior threeStates integerRepresenta un valor numérico como casilla de selección de tres estados. 2=semi-marcado, 1=marcado, 0=no marcado, -1=invisible, -2=no marcado desactivado, -3=marcado desactivado, -4=semi-marcado desactivado

Ejemplo:

C_OBJECT($ob3) OB SET($ob3;"valueType";"integer") OB SET($ob3;"value";-3) C_OBJECT($ob4) OB SET($ob4;"valueType";"integer") OB SET($ob4;"value";-3) OB SET($ob4;"behavior";"threeStates")

requiredList y choiceList Cuando un atributo "choiceList" o "requiredList" está presente en el interior del objeto, la entrada de texto se sustituye por una listadesplegable o un combo box, dependiendo del atributo:

Si el atributo es "choiceList", la celda se muestra como un combo box. Esto significa que el usuario puede seleccionar oescribir un valor.Si el atributo es "requiredList" entonces la celda se muestra como una lista desplegable. Esto significa que el usuario sólopuede seleccionar uno de los valores de la lista.

En ambos casos, un atributo "value" se puede utilizar para preseleccionar un valor en el widget.Nota: los valores de widgets se definen a través de un array. Si desea asignar una lista 4D existente al widget, es necesario utilizarlos atributos "requiredListReference", "requiredListName", "choiceListReference", o "choiceListName".Ejemplos:

Usted quiere mostrar una lista desplegable con sólo dos opciones: "Open" o "Closed". "Closed" debe estar preseleccionada:

ARRAY TEXT($RequiredList;0) APPEND TO ARRAY($RequiredList;"Open") APPEND TO ARRAY($RequiredList;"Closed") C_OBJECT($ob) OB SET($ob;"valueType";"text") OB SET($ob;"value";"Closed") OB SET ARRAY($ob;"requiredList";$RequiredList)

Usted quiere aceptar todo valor entero, pero mostrar un combo box para sugerir los valores más comunes:

ARRAY LONGINT($ChoiceList;0) APPEND TO ARRAY($ChoiceList;5) APPEND TO ARRAY($ChoiceList;10) APPEND TO ARRAY($ChoiceList;20) APPEND TO ARRAY($ChoiceList;50) APPEND TO ARRAY($ChoiceList;100) C_OBJECT($ob) OB SET($ob;"valueType";"integer") OB SET($ob;"value";10) //10 as default value OB SET ARRAY($ob;"choiceList";$ChoiceList)

- 47 -

Page 48: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

requiredListName y requiredListReference Los atributos "requiredListName" y "requiredListReference" le permiten utilizar, en una celda de list box, una lista definida en 4D enmodo Diseño (en la caja de herramientas) o por programación (utilizando el comando New list). La celda se mostrará como una listadesplegable. Esto significa que el usuario sólo puede seleccionar uno de los valores de la lista.Utilice "requiredListName" o "requiredListReference" dependiendo del origen de la lista: si la lista proviene de la caja deherramientas, pase un nombre; de lo contrario, si la lista se ha definido por programación, pase una referencia. En ambos casos, unatributo "valor" se puede utilizar para preseleccionar un valor en el widget.Nota: si desea definir estos valores a través de un array simple, es necesario utilizar el atributo "requiredList".En este caso, el atributo "saveAs" definirá si el elemento seleccionado debe ser guardado como un "valor" o como una "referencia".

Si "saveAs" = "reference" entonces se guardará como una referencia y el "valueType" debe ser real o entero.Si "saveAs" = "value" se guarda el valor. En este caso, el "valueType" debe ser del mismo tipo que los valores de la lista,"texto"o "entero" por lo general; de lo contrario 4D intentará convertir el valor de la lista en el "valueType" del objeto (verejemplos a continuación).

Para más información sobre la opción "guardar como", consulte la sección Guardar como Valor o Referencia en el Manual deDiseño.Nota: si la lista contiene elementos de texto que representan los valores reales, el separador decimal debe ser un punto ("."),independientemente de los parámetros locales: "17.6" "1234.456".Ejemplos:

Usted quiere mostrar una lista desplegable basado en una lista "colors" definida en la caja de herramientas (contiene losvalores "blue", "yellow" y "green"), guárdela como un valor y muestre "blue" por defecto:

C_OBJECT($ob) OB SET($ob;"valueType";"text") OB SET($ob;"saveAs";"value") OB SET($ob;"value";"blue") OB SET($ob;"requiredListName";"colors")

Usted quiere mostrar una lista desplegable basado en una lista definida por programación y guárdela como una referencia:

<>List:=New list APPEND TO LIST(<>List;"Paris";1) APPEND TO LIST(<>List;"London";2) APPEND TO LIST(<>List;"Berlin";3) APPEND TO LIST(<>List;"Madrid";4) C_OBJECT($ob) OB SET($ob;"valueType";"integer") OB SET($ob;"saveAs";"reference") OB SET($ob;"value";2) //muestra London por defecto OB SET($ob;"requiredListReference";<>List)

choiceListName y choiceListReference

- 48 -

Page 49: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

Los atributos "choiceListName" y "choiceListReference" le permiten utilizar, en una celda de list box, una lista definida en 4D enmodo Diseño (en la caja de herramientas) o por programación (utilizando el comando [#cmd id="375"/]). La celda a continuación semuestra como un combo box, lo que significa que el usuario puede seleccionar o digitar un valor.Utilice "choiceListName" o "choiceListReference" dependiendo del origen de la lista: si la lista proviene de la caja de herramientas,se pasa un nombre; de lo contrario, si la lista se ha sido definido por programación, se pasa una referencia. En ambos casos, unatributo "value" se puede utilizar para preseleccionar un valor en el widget.Nota: si desea definir estos valores a través de un array simple, es necesario utilizar el atributo "choiceList".El atributo "saveAs" no se puede usar en este caso porque los elementos seleccionados se guardan automáticamente como un"value" (ver requiredListName y requiredListReference para más información).Nota: si la lista contiene elementos de texto que representa los valores reales, el separador decimal debe ser un punto ("."),Independientemente de los parámetros locales, por ejemplo: "17.6" "1234.456".Ejemplo:Usted desea mostrar un combo box based on a "colors" basado en una lista "colors", definida en la caja de herramientas (quecontiene los valores "blue", "yellow" y "green") y mostrar "green" por defecto:

C_OBJECT($ob) OB SET($ob;"valueType";"text") OB SET($ob;"value";"blue") OB SET($ob;"choiceListName";"colors")

unitsList, unitsListName, unitsListReference y unitReference Puede utilizar atributos específicos para agregar unidades asociadas a valores de las celdas (por ejemplo: "10 cm", "20 píxeles",etc.). Para definir la lista de unidades, puede utilizar uno de los siguientes atributos:

"unitsList": un array que contiene los elementos x utilizados para definir las unidades disponibles (por ejemplo: "cm","pulgadas", "km", "millas", etc.). Utilice este atributo para definir las unidades dentro del objeto."unitsListReference":una referencia a una lista 4D que contiene las unidades disponibles. Utilice este atributo para definir lasunidades con una lista 4D creada con el comando New list."unitsListName": un nombre de una lista 4D creada en modo diseño que contenga las unidades disponibles. Utilice esteatributo para definir las unidades con una lista 4D creada en la caja de herramientas.

Independientemente de la forma en que se defina la lista unidades, puede estar asociada al atributo siguiente:

"unitReference": un único valor que contiene el índice (de 1 a x) del elemento seleccionado en la lista de valores "unitList","unitsListReference" o "unitsListName".

La unidad actual se muestra como un botón mostrando los valores "unitList", "unitsListReference" o "unitsListName" v cada vez quese hace clic (por ejemplo, "píxeles" -> "filas" -> "cm" -> "píxeles" - > etc.)Ejemplo: queremos definir un valor de entrada numérico seguido de dos unidades posibles: "filas" o "píxeles". El valor actual es "2"+ "líneas". Utilizamos valores definidos directamente en el objeto (atributo "unitsList" ):

ARRAY TEXT($_units;0) APPEND TO ARRAY($_units;"lines") APPEND TO ARRAY($_units;"pixels") C_OBJECT($ob) OB SET($ob;"valueType";"integer") OB SET($ob;"value";2) // 2 "units" OB SET($ob;"unitReference";1) //"lines" OB SET ARRAY($ob;"unitsList";$_units)

alternateButton Si desea agregar un botón de puntos suspensivos [...] a una celda, sólo tiene que pasar el atributo "alternateButton" con el valor Trueen el objeto. El botón se muestra en la celda de forma automática.Cuando un usuario clic en este botón, se generará un evento On Alternate Click, y podrá manejarlo como quiera (ver el párrafo

- 49 -

Page 50: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

"Gestión de eventos" para más información).Nota: On Alternate Click es el nuevo nombre del evento On Arrow Click, renombrado en 4D v15 para resaltar su alcance extendido.Ejemplo:

C_OBJECT($ob1) $entry:="Hello world!" OB SET($ob;"valueType";"text") OB SET($ob;"alternateButton";True) OB SET($ob;"value";$entry)

color valueType

El atributo valueType de valor "color" le permite mostrar un color o un texto.

Si el valor es un número, un rectángulo de color se dibuja dentro de la celda. Ejemplo:

C_OBJECT($ob4) OB SET($ob4;"valueType";"color") OB SET($ob4;"value";0x00FF0000)

Si el valor es un texto, a continuación, se muestra el texto (por ejemplo: "valor", "Automático").

event valueType

El "evento" valueType muestra un botón simple que genera un evento On Clicked cuando el usuario hace clic. No se pueden pasar odevolver datos o valores.

Opcionalmente, se puede pasar un atributo "label".Ejemplo:

C_OBJECT($ob) OB SET($ob;"valueType";"event") OB SET($ob;"label";"Edit...")

Gestión de eventos

Varios eventos se pueden manejar en las columnas de list box de tipo array de objetos:

On Data Change: un evento On Data Change se dispara al modificar un valor: en un área de entrada de textoen una lista desplegableen un área de combo boxen un botón de unidad (cambio de valor de x a valor x+1)en una casilla de selección (cambia entre marcado/no marcado)

On Clicked: cuando el usuario hace clic en un botón instalado utilizando el atributo valueType "event", un evento On Clicked segenerará. Este evento es manejado por el programador.

On Alternative Click:cuando el usuario hace clic en un botón de puntos suspensivos (atributo "alternateButton"), un evento OnAlternative Click se generará. Este evento es manejado por el programador.

Nota: On Alternative Click es el nuevo nombre del evento On Arrow Click que estaba disponible en versiones anteriores de 4D.Este evento ha sido renombrado en 4D v15 ya que su alcance se ha extendido.

- 50 -

Page 51: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

MAXIMIZE WINDOW

Originalmente introducido en 4D v14 R3El efecto del comando MAXIMIZE WINDOW en Windows ha sido modificado en los casos cuando se aplica a una ventana que estácontrolada por las limitaciones de tamaño (por ejemplo, una ventana formulario):

Si ninguna de las limitaciones de tamaño está en conflicto con el tamaño objetivo, la ventana se pone en estado "maximizado"al igual que en las versiones anteriores de 4D (es decir, que cambia de tamaño para ajustarse al tamaño de la ventana MDI("Multiple Document Interface") padre, su barra de título y sus bordes se ocultan y sus botones de control, minimizar, restaurar ycerrar, se ubican a la derecha de la barra de menú de la aplicación).Sin embargo, si al menos una de las restricciones de tamaño está en conflicto (por ejemplo, si el ancho de la ventana MDI es100 y el ancho máximo de la ventana formulario es 80), la ventana no se pone en estado "maximizado", pero sólo cambia detamaño para su tamaño máximo permitido. Este tamaño es define por la dimensión MDI o por la restricción. Con este nuevo comportamiento, la interfaz se mantiene constante cuando se redimensionan ventanas con limitaciones.

Ejemplo

El siguiente formulario se define con una restricción de tamaño (ancho máximo = 400):

El botón script sólo contiene:

MAXIMIZE WINDOW(Current form window)

En el siguiente contexto, si el usuario hace clic en el botón:

- 51 -

Page 52: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

... La ventana no está definida en el estado "maximizada"; en cambio sólo su altura se extiende:

- 52 -

Page 53: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

- 53 -

Page 54: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

METHOD GET CODE y METHOD SET CODE

METHOD GET CODE ( ruta ; codigo {; *} ) METHOD SET CODE ( ruta ; codigo {; *} )

Descripción

Los comandos METHOD GET CODE y METHOD SET CODE ahora soportan nuevos metadatos, lo que le permite obtener oestablecer propiedades relacionadas con 4D Mobile.Un nuevo atributo llamado "published4DMobile" se ha agregado y puede ser incluido en la línea %attributes:

// %attributes = { "published4DMobile": { "table": "aTableName", "scope": "table" } }

La propiedad llamada "scope" puede tomar los siguientes valores: "none", "table", "currentRecord" o "currentSelection".

Los atributos soportados son:

{ "invisible" : false, // true si visible "publishedWeb" : false, // true si está disponible a través delas etiquetas y URLs 4D "publishedSoap": false, // true si se ofrece como servicio web "publishedWsdl":false, // true si se ha publicado en WSDL "shared" : false, // true si es compartida por los componentes y labase local "publishedSql" : false, // true si está disponible a través de SQL "executedOnServer" : false,// true si se ejecuta en el servidor "published4DMobile" : { "scope": "table", // "none" o "table" o"currentRecord" o "currentSelection" "table": "aTableName" // presente si el alcance es diferente de"none" } }

Nota: para los atributos "published4DMobile", si el valor "table" no existe o si el "scope" no es válido, estos atributos se ignoran.

- 54 -

Page 55: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

Números reales, reducción de números de dígitos significativos

Originalmente introducido en 4D v14 R3El número de dígitos significativos utilizados para la representación decimal de números reales se ha reducido en 4D:

en las versiones anteriores, este número era de 15 dígitosen 4D v15 y versiones posteriores, es ahora de 13 dígitos

Esta modificación concierne sólo a la conversión de números reales a texto, no la forma en que se representan internamente(almacenamiento), o las operaciones aritméticas entre los números reales. La exactitud de los números reales no se ve afectada.El nuevo principio implementado consiste en no incluir más los dos últimos dígitos, que no se podían garantizar como significativos,en la representación de texto. El objetivo es limitar el número de casos en que las operaciones con números reales producenresultados incorrectos. Por ejemplo, esto nos permitirá obtener resultados válidos en los siguientes casos:

Operación Resultado en 4D < v15 Resultado en 4D v15 y superioresCadena(3216.36 - 3214.89) "1.47000000000025" "1.47"Cadena(0.321636-0.321489) "0.000146999999999953" "0.000147"

El uso de 13 dígitos significativos para los números reales es generalmente adecuado para aplicaciones informáticas y mejora elprocesamiento de estos números. Recuerde que los cálculos informáticos en los números reales siempre se realizan poraproximación, ya que estos números se expresan internamente sobre una base binaria y no decimal. El número de dígitossignificativos permite que el algoritmo de conversión para realizar el redondeo y aproximaciones necesario para obtener larepresentación esperada. Del mismo modo, las comparaciones de igualdad de números reales se llevan a cabo mediante el análisisde los resultados, cuando los dos números se restan (en 4D, el grado de precisión por defecto de estas comparaciones se puedemodificar utilizando el comando SET REAL COMPARISON LEVEL).Si su aplicación 4D utiliza los 15 primeros dígitos de los números reales, es posible que tenga que utilizar otros formatos de datos,como texto o enteros largos. Tenga en cuenta que, como se explicó anteriormente, los números reales no son adecuados para elalmacenamiento y/o el cálculo de valores con un gran número de dígitos significativos, como números de serie o medicionesastronómicas, ya que su precisión está limitada por naturaleza.

- 55 -

Page 56: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

OBJECT GET COORDINATES

OBJECT GET COORDINATES ( {* ;} objeto ; izq; arriba ; derecha ; abajo )

Descripción

Originalmente introducido en 4D v14 R5Tema: Objetos (Formularios)El comando OBJECT GET COORDINATES ahora puede devolver las coordenadas de partes específicas del listbox, es decir,columnas, encabezados, pies de página, y no sólo los del objeto listbox padre.

En versiones anteriores, este comando siempre devolvía las coordenadas del listbox padre, independientemente de la parte dellistbox a la que se aplique. Ahora, cuando el parámetro object referencia un encabezado, una columna o un pie de página del listbox,las coordenadas devueltas son las del sub-objeto listbox designado.

Puede utilizar esta nueva funcionalidad, por ejemplo, para mostrar un pequeño icono en la celda de encabezado de un listbox cuandose pasa el cursor sobre ella, indicando al usuario que puede hacer clic para mostrar un menú contextual.Nota de compatibilidad: si utiliza este comando con un encabezado, una columna o un pie de list box en sus aplicacionesexistentes, las coordenadas devueltas serán diferentes después de la conversión en 4D v14 R5 o superior. Si desea obtener lascoordenadas de todo el list box, es necesario cambiar el código para que el comando se llame en el propio objeto listbox en lugar deun sub-objeto.Por razones de coherencia, el marco de referencia utilizado es el mismo cuando el objeto es un listbox o un sub-objeto de list box: elorigen es la esquina superior izquierda del formulario que contiene el objeto. Para los sub-objetos listbox, las coordenadas devueltasson teóricas; tienen en cuenta el desplazamiento aplicado al list box antes de que ocurra un posible clipping. Como resultado, el sub-objeto puede que no sea visible (o sólo parcialmente) en sus coordenadas, y estas coordenadas pueden estar fuera de los límites delformulario (o incluso ser negativas). Para averiguar si el sub-objeto es visible (y que parte es visible) es necesario comparar lascoordenadas devueltas con las coordenadas listbox, mientras considera las siguientes reglas:

Los límites de los sub-objetos dependen de las coordenadas de su listbox padre (devuelto por OBJECT GET COORDINATESen el listbox).Los sub-objetos encabezado y pie de página se muestran sobre el contenido de la columna: cuando las coordenadas de unacolumna cruzan las coordenadas de las líneas de encabezado o pie de página, a continuación, la columna no se muestra enesta intersección.Los elementos de las columnas bloqueadas se muestran por encima de los elementos de las columnas desplazables: cuandolas coordenadas de un elemento en una columna desplazable se cruzan las coordenadas de un elemento en una columnabloqueada, luego no se muestra en esta intersección.

Por ejemplo, considere el siguiente gráfico, donde las coordenadas de la columna Capital son simbolizadas por un rectángulo rojo:

Como puede ver en la primera imagen, la columna es más grande que el listbox, por lo que sus coordenadas van más allá del límiteinferior del listbox, incluyendo el pie de página. En la segunda imagen, el listbox se ha desplazado, por lo que la columna también seha movido "bajos" las áreas de la columna Lenguaje y de encabezado. En cualquier caso, para calcular la parte visible real (zonaverde), es necesario restar las áreas rojas.

Ejemplo

Para las necesidades de su interfaz, usted desea rodear el área en la que el usuario hizo clic con un rectángulo rojo:

- 56 -

Page 57: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

En el método objeto del listbox, puede escribir:

OBJECT SET VISIBLE(*;"rectangleInfo";False) //inicializar un rectángulo rojo $ptr:=OBJECT Get pointer(Object current) OBJECT GET COORDINATES($ptr->;$x1;$y1;$x2;$y2) OBJECT SET VISIBLE(*;"RedRect";True) OBJECT SET COORDINATES(*;"RedRect";$x1;$y1;$x2;$y2) OBJECT GET COORDINATES(*;"LB1";$lbx1;$lby1;$lbx2;$lby2) If($lby1>$y1)|($lby2<$y2)&NBSP; // si el área en la que se hace clic está fuera del listbox OBJECT SET VISIBLE(*;"Alert";True)&NBSP; // mostrar un alerta Else OBJECT SET VISIBLE(*;"Alert";False) End if

El método devuelve las coordenadas teóricas. Si el listbox es redimensionado, puede necesitar calcular el recorte para saber quéparte es visible:

- 57 -

Page 58: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

On Scroll form event

Modificación del evento On Picture Scroll

En las versiones anteriores de 4D, el desplazamiento de las variables y campos imagen podía manejarse a través del eventoformulario On Picture Scroll (valor 59).

En 4D v15, el manejo de este tipo de eventos se ha extendido a los objetos list box (ver más adelante). En consecuencia, el eventoformulario On Picture Scroll ha sido renombrado On Scroll y ahora también está disponible para los list boxes en la lista depropiedades. La acción de este evento en imágenes no se modifica.

Notas de compatibilidad:Hay dos pequeñas diferencias entre la implementación del evento formulario On Picture Scroll en las versiones anteriores de 4D y elnuevo evento On Scroll:

On Picture Scroll se generaba en el método objeto y en el método formulario (pero no puede ser seleccionado o desactivadoen las propiedades del formulario). Para una mejor consistencia, a partir de 4D v15, el evento On Scroll se generaba sólo en elmétodo de objeto. Si su aplicación convertida manejaba eventos de desplazamientos de imágenes desde el métodoformulario, tendrá que mover el código para el método objeto apropiado.En la pila de eventos, On Picture Scroll podía ser llamado antes de otros eventos de usuario tales como On Click. On Scrollsiempre se genera después de los otros eventos de usuario.

Evento On Scroll

En 4D v15, el evento On Scroll está disponible para dos objetos desplazables:

Los campos y variables imagen con el formato "Truncado (no centrado)" (ya disponible en versiones anteriores de 4D con elnombre On Picture Scroll),Los list box (nuevo en 4D v15).

Por defecto, el evento no se selecciona para los objetos en la lista de propiedades.El evento formulario On Scroll se genera tan pronto como un usuario desplaza el objeto de formulario dentro del área que lo contiene.El evento sólo se genera cuando el desplazamiento es el resultado de una acción del usuario: uso de barras y/o cursores dedesplazamiento, con la rueda del ratón o el teclado. No se genera cuando el objeto se desplaza debido a la ejecución del comandoOBJECT SET SCROLL POSITION . Este evento se dispara después de todos los otros eventos relacionados con la acción de desplazamiento (On Clicked, On AfterKeystroke, etc.).El evento sólo se genera en el método objeto (no en el método formulario).

Ejemplo

Usted desea dibujar un rectángulo rojo alrededor de la celda seleccionada de un list box y desea que el rectángulo se mueva juntocon el list box si es desplazado verticalmente por el usuario. En el método objeto del list box, puede escribir:

Case of :(Form event=On Clicked) LISTBOX GET CELL POSITION(*;"LB1";$col;$raw) LISTBOX GET CELL COORDINATES(*;"LB1";$col;$raw;$x1;$y1;$x2;$y2) OBJECT SET VISIBLE(*;"RedRect";True)&NBSP; //inicializa un rectángulo rojo OBJECT SET COORDINATES(*;"RedRect";$x1;$y1;$x2;$y2) :(Form event=On Scroll) LISTBOX GET CELL POSITION(*;"LB1";$col;$raw) LISTBOX GET CELL COORDINATES(*;"LB1";$col;$raw;$x1;$y1;$x2;$y2) OBJECT GET COORDINATES(*;"LB1";$xlb1;$ylb1;$xlb2;$ylb2) $toAdd:=LISTBOX Get headers height(*;"LB1") //tener en cuenta la altura del encabezado paraque no lo sobrepase If($ylb1+$toAdd<$y1) & ($ylb2>$y2) //si estamos dentro del list box //para simplificar, sólo manejamos encabezados //pero debemos manejar clipping horizontal //así como también las barras de desplazamiento OBJECT SET VISIBLE(*;"RedRect";True) OBJECT SET COORDINATES(*;"RedRect";$x1;$y1;$x2;$y2) Else

- 58 -

Page 59: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

OBJECT SET VISIBLE(*;"RedRect";False) End if End case

Como resultado, el rectángulo rojo sigue el desplazamiento del list box:

- 59 -

Page 60: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

OPEN URL (nuevo nombre de OPEN WEB URL)

OPEN URL ( ruta {;nomApp} {; *} )

Parámetro Tipo Descripciónruta Cadena -> Ruta del documento a abrir o URLnomApp Cadena -> Nombre de la aplicación a utilizar* Operador -> Si se especifica = el URL no es traducido; sI se omite = el URL se traduce

Descripción

Originalmente introducido en 4D v14 R3Nota de compatibilidad: OPEN URL es el nuevo nombre del comando OPEN WEB URL (tema "Utilidades"), cuyas capacidadesse han extendido.El comando OPEN URL acepta un nuevo parámetro nomApp, lo que le permite designar a la aplicación a utilizar para abrir eldocumento o URL.

Si se especifica este parámetro, el comando le pedirá al sistema buscar una aplicación instalada con el nombre especificado y si loencuentra, lo lanzará y le pedirá que abra la URL o documento especificado.En Windows, el mecanismo para reconocer un nombre de aplicación es el mismo utilizado por el elemento de menú "Ejecutar" en elmenú 'Inicio'. Por ejemplo:

"iexplore" para lanzar Internet Explorer."chrome" para lanzar Chrome (if installed)"winword"para lanzarpara lanzar MS Word (si está instalado)

Nota: la lista de aplicaciones reconocidas se puede encontrar en el registro en la siguiente llave:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App PathsEn OS X, el mecanismo utiliza la base del Finder que indexa automáticamente todas las aplicaciones instaladas. Reconoce todaaplicación .app por su nombre de paquete (con o sin el sufijo .app). Por ejemplo:

"safari""FireFox""TextEdit"

Si la aplicación nomApp no se encuentra, no se devuelve ningún error; el comando funciona como si no se hubiera especificado (esdecir, el sistema selecciona la aplicación más adecuada para el tipo de documento o URL).

Ejemplo

Puede abrir un archivo texto con diferentes aplicaciones:

OPEN URL("C:\\temp\\cookies.txt") //abre el archivo con el Bloc de notas OPEN URL("C:\\temp\\cookies.txt";"winword") //abre el archivo con MS Word (si está instalado) OPEN URL("C:\\temp\\cookies.txt";"excel") //abre el archivo con MS Excel (si está instalado)

- 60 -

Page 61: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

PROCESS 4D TAGS

PROCESS 4D TAGS ( plantillaEntrada; resultadoSalida{;param1;...;paramN} )

Parámetro Tipo DescripciónplantillaEntrada Texto, BLOB -> Datos que contienen las etiquetas a procesarresultadoSalida Texto, BLOB <- Resultado de la ejecución de la plantillaparam1...N Texto, Fecha, Hora, número, puntero -> Parámetros a pasar a la plantilla en ejecución

Descripción

Originalmente introducido en 4D v14 R3Tema: HerramientasEl comando PROCESS 4D TAGS ahora soporta la inserción de parámetros en la plantilla que se está ejecutando.PROCESS 4D TAGS acepta un número indefinido de parámetros param adicionales. Al igual que para los métodos de proyecto, losparámetros pueden ser valores escalares de cualquier tipo (texto, fecha, hora, entero largo, real...). También puede utilizar arrayspasando punteros de array.Dentro de la plantilla procesada por las etiquetas 4D, estos parámetros son accesibles vía los argumentos estándar $1, $2..., comoen los métodos 4D (ver ejemplo).Un conjunto dedicado de variables locales se define ahora en el contexto de ejecución del comando PROCESS 4D TAGS. Estasvariables se pueden leer o escribir durante el proceso.Nota de compatibilidad: en versiones anteriores de 4D, las variables locales definidas en el contexto de llamada se podíanacceder en el contexto de ejecución de PROCESS 4D TAGS en modo interpretado. Este ya no es el caso.Nota: una nueva etiqueta 4DEval también se añade en 4D y la etiqueta 4DLOOP ahora acepta punteros. Para obtener másinformación, consulte la sección Etiquetas de transformación 4D.

Ejemplo

ARRAY TEXT($array;2) $array{1}:="hello" $array{2}:="world" $input:="<!--#4DEVAL $1-->" $input:=$input+"<!--#4DLOOP $2-->" $input:=$input+"<!--#4DEVAL $2->{$2->}--> " $input:=$input+"<!--#4DENDLOOP-->" PROCESS 4D TAGS($input;$output;"elements = ";->$array) // $output = "elements = hello world"

- 61 -

Page 62: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

QR Get text property y QR SET TEXT PROPERTY

QR Get text property (area ; numColumna; numLinea; propiedad) -> Resultado

Parámetro Tipo Descripciónarea Entero largo -> Referencia del áreanumColumna Entero largo -> Número de columnanumLinea Entero largo -> Número de rupturapropiedad Entero largo -> Número de propiedadResultado Entero largo | Cadena <- Valor de la propiedad

QR SET TEXT PROPERTY ( area ; numColumna; numLinea; propiedad ; valor)

Parámetro Tipo Descripciónarea Entero largo -> Referencia del áreanumColumna Entero largo -> Número de columnanumLinea Entero largo -> Número de líneapropiedad Entero largo -> Número de propiedadvalor Entero largo | Cadena <- Valor de la propiedad seleccionada

Descripción

Originalmente introducido en 4D v14 R3Estos comandos se han modificado para soportar nombres de fuentes para definir las propiedades de texto en lugar de números defuente que están en desuso en el rango 4D v14 (y superiores). Esta modificación es parte de la estrategia global de 4D de eliminarlas llamadas QuickDraw del programa.

El parámetro propiedad cambió:

La constante qr font fue renombrada como _O_qr font. Ahora es obsoleta y no se debe utilizar (la compatibilidad se mantienepero no se soportará en futuras versiones)La nueva constante qr font name (10) se ha añadido al tema "QR Text Properties". Ahora debe utilizar esta constante paradefinir el tipo de fuente y utilizar un valor de tipo cadena. Puede pasar un nombre devuelto por el comando FONT LIST.

Ejemplo

Este método define el atributo fuente del título de la primera columna:

// La siguiente llamada asigna la fuente Times: QR SET TEXT PROPERTY(qr_area;1;-1;qr font name;"Times")

- 62 -

Page 63: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

RESOLVE POINTER

RESOLVE POINTER ( puntero; nomVar ; numTabla ; numCamp )

Parámetro Tipo Descripción puntero Puntero -> Puntero para el que se debe recuperar el objeto referenciado nomVar Cadena <- Nombre de la variable referenciada o cadena vacía numTabla Entero largo <- Número de la tabla o del elemento de array referenciado o 0 o -1 numCamp Entero largo <- Número de campo referenciado o 0 o -1

Descripción

Tema: LenguajeA partir de 4D v15, se soportan los arrays de dos dimensiones. Por ejemplo, ahora puede escribir ->a{1}{2}.Como resultado, cuando se pasa un puntero a un elemento de un array de dos dimensiones, el parámetro numCamp recibe elnúmero del elemento de la segunda dimensión. Además, RESOLVE POINTER ahora devuelve -1 en lugar de 0 en numCamp parapunteros a variables y arrays unidimensionales.La tabla de resultados es ahora:

Objeto referenciado ParámetrosnomVar numTabla numCampo

...Variable Nombre de la variable -1 -1Elemento del array Nombre del array Número del elemento -1Elemento de array 2D Nombre del array 2D Número del elemento línea Número del elemento columna...

Ejemplo

Este es un ejemplo de puntero a un array 2D:

ARRAY TEXT(atCities;100;50) C_POINTER($city) atCities{1}{2}:="Rome" atCities{1}{5}:="Paris" atCities{2}{6}:="New York" // ...otros valores $city:=->atCities{1}{5} RESOLVE POINTER($city;$var;$rowNum;$colNum) //$var="atCities" //$rowNum="1" //$colNum="5"

- 63 -

Page 64: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

Subrecords conversion

Originalmente introducido en 4D v14 R3Ahora puede asignar el valor del campo especial "id_added_by_converter" que es añadido automáticamente por 4D al convertir unabase de una versión anterior a la v11. En versiones anteriores, este valor sólo puede ser asignado por 4D y usted necesita utilizarcomandos "obsoletos" tales como _o_CREATE SUBRECORD para poder añadir nuevos registros en las subtablas convertidas.

Esta nueva funcionalidad le permite convertir sus bases antiguas que utilizan las subtablas de una manera más progresiva: puedemantener el enlace especial "relación subtabla" y añadir o modificar los registros relacionados como si fueran estándar. Una vezactualizados todos sus métodos, podrá sustituir la relación especial con un enlace regular sin cambiar el código.

Por ejemplo, ahora puede escribir:

CREATE RECORD([Employees]) <p>[Employees]Last Name:="Jones" CREATE RECORD([Employees_Children]) [Employees_Children]First Name:="Natacha" [Employees_Children]Birthday:=!12/24/2013! [Employees_Children]id_added_by_converter:=4 //Type mismatch in previous releases SAVE RECORD([Employees_Children]) SAVE RECORD([Employees]

Este código funcionará indiferentemente con una relación especial o estándar.

- 64 -

Page 65: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

Toolbar form windows

Originalmente introducido en 4D v14 R5

4D v14 R5 incluye una serie de implementaciones destinadas a ayudar a los desarrolladores a diseñar y administrar barras deherramientas personalizadas. Las barras de herramientas son ventanas con propiedades específicas en cuanto a su posición ytamaño.Los siguientes comandos soportan la creación y la gestión de barras de herramientas:

Open form window: acepta el nuevo tipo Toolbar form windowTool bar height: devuelve la altura de la barra de herramientas personalizadaHIDE TOOL BAR y SHOW TOOL BAR: anteriormente obsoletos, estos comandos se han reactivado para la gestión debarras de herramientas personalizadas.

Open form window

Tema: Ventanas

Open form window ( {aTable ;} formName {; type {; hPos {; vPos {; *}}}} ) -> Resultado

El comando Open form window ahora puede crear ventanas formulario de tipo Barra de herramientas.Una nueva constante ha sido añadido al tema "Crear ventana formulario" y utilizable en el parámetro type:

Constante Tipo ValorToolbar form window Entero largo 35

Cuando se pasa la constante Toolbar form window, la ventana se crea con la ubicación, el tamaño y las propiedades gráficas de unabarra de herramientas, es decir:

La ventana se mostrará siempre justo debajo de la barra de menúsEl tamaño horizontal de la ventana se ajustará automáticamente para llenar todo el espacio disponible horizontal en el escritorio(en OS X) o dentro de la ventana principal de 4D (en Windows). El tamaño vertical de la ventana se basa en las propiedadesdel formulario, como todos los otros tipos de ventanas formulario.La ventana no tiene bordes, no se puede mover y no se puede redimensionar manualmente, y HPOS, los parámetros posH,PosV y * se ignoran si se pasan.

No es posible crear al mismo tiempo dos ventanas de barra de herramientas diferentes. Si Crear ventana formulario se llama conel tipo Formulario ventana barra de herramientas mientras ya existe una ventana de barra de herramientas, se genera un error -10613 ("No se puede crear dos ventanas formularios de tipo barra de herramientas").Nota sobre las ventana formulario barra de herramientas y modo pantalla completa OS X: si su aplicación muestra a la vezuna ventana barra de herramientas y una ventana estándar que soporta el modo pantalla completa (opción Con modo pantallacompleta Mac), las reglas de interfaz requieren que se oculte la barra de herramientas cuando una ventana estándar entra en modopantalla completa. Para saber si una ventana ha cambiado al modo de pantalla completa, simplemente pruebe si su tamaño verticales exactamente el mismo que la altura de la pantalla (ver abajo).

Altura barra de herramientas

Tema: Windows (comando desplazado desde el tema "Interfaz de usuario")

Tool bar height -> Resultado

Parámetro Tipo Descripción

Resultado Enterolargo <- Altura (expresada en píxeles) de la barra de herramientas o 0 si la barra de herramientas está

oculta

- 65 -

Page 66: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

A partir de 4D v14 R5, este comando también funciona con las barras de herramientas personalizadas creadas por el comandoOpen form window utilizando el tipo Toolbar form window.Este comando devuelve la altura de la barra de herramientas visible actual, expresada en píxeles. Puede ser la barra deherramientas del modo Diseño de 4D, o una barra de herramientas creada por Open form window, dependiendo del contexto (labarra de herramientas del modo Diseño se oculta automáticamente si se muestra una barra de herramientas personalizada creadapor Open form window).Si la barra de herramientas está oculta, el comando devuelve 0.

HIDE TOOL BAR y SHOW TOOL BAR

Tema: Ventanas (comandos desplazados desde el tema "User interface")

SHOW TOOL BARNo requiere ningún parámetro

HIDE TOOL BARNo requiere ningún parámetro

Estos comandos ya no son obsoletos en 4D partir de la versión 14 R5: ahora se pueden usar para manejar las ventanas formulariode barras de herramientas personalizadas creadas con el comando Open form window para el proceso actual.

SHOW TOOL BAR: si se ha abierto una ventana barra de herramientas (llamando Open form window con la opción Toolbarform window), el comando hace que esta ventana sea visible. Si la ventana barra de herramientas ya era visible o no existe,este comando no hace nada.HIDE TOOL BAR: si se ha abierto una ventana de la barra de herramientas (llamando Open form window con la opciónToolbar form window), el comando oculta esta ventana. Si la ventana barra de herramientas ya estaba oculta o no existe, estecomando no hace nada.

Ejemplo En OS X, que se ha definido una barra de herramientas personalizada y una ventana estándar con la opción Has full screen modeMac. Cuando una ventana estándar es maximizada por un usuario mientras se muestra la ventana de barra de herramientas, ustedno desea que la ventana maximizada sea solapada por la barra de herramientas.Para evitar esto, en el evento "On Resize" del formulario de la ventana estándar, es necesario detectar cuando la ventana está enmodo de pantalla completa y luego llamar a HIDE TOOL BAR:

Case of :(Form event=On Resize) GET WINDOW RECT($left;$top;$right;$bottom) If(Screen height=($bottom-$top)) HIDE TOOL BAR Else SHOW TOOL BAR End if End case

Has toobar button Mac constant deprecated

La constante Has toolbar button Mac es obsoleta, la opción correspondiente ha sido desaprobada por Apple desde OS X 10.6.La constante estaba disponible en los temas "Crear ventana", "Crear ventana formulario". Se ha cambiado el nombre _O_Hastoolbar button Mac a partir de 4D v14 R5.

- 66 -

Page 67: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

TRANSFORM PICTURE

TRANSFORM PICTURE ( imagen; operador {; param1 {; param2 {; param3 {; param4}}}} )

Nuevo operador

Originalmente introducido en 4D v14 R2El comando TRANSFORM PICTURE (tema "Imágenes") acepta la nueva constante Transparency en el parámetro operator parapermitir aplicar la transparencia personalizada a imágenes transformadas.

Esta funcionalidad está especialmente diseñada para manejar la transparencia en imágenes convertidas de las imágenes enformato PICT en desuso, pero se puede usar con imágenes de cualquier tipo.

La nueva constante se ha añadido al tema "Picture Transformación". Cuando se pasa, sólo se puede utilizar param1:

operador (valor) param1 param2 param3 param4 ValoresTransparency (102) RGB color - - - hexadecimal

Transparency: una máscara de transparencia se aplica a la imagen basándose en el color pasado en param1. Por ejemplo, sipasa 0x00FFFFFF (color blanco) en param1, todos los píxeles blancos en la imagen original serán transparentes en la imagentransformada. Esta operación se puede aplicar a imágenes de mapa de bits o de vectores. Por defecto, si el parámetroparam1 se omite, el color blanco (0x00FFFFFF) se define como color objetivo.

Ejemplo

Quiere definir las partes blancas de una imagen como transparentes. Para ello, puede utilizar el siguiente código:

TRANSFORM PICTURE(Pict1;Transparency;0x00FFFFFF) //0x00FFFFFF es blanco

Obtiene el siguiente resultado:

- 67 -

Page 68: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

WA GET PREFERENCE y WA SET PREFERENCE

Nuevo comportamiento por defecto

Originalmente introducido en 4D v14 R2Por razones de seguridad, el cambio de un contenido del área Web al soltar un archivo o una URL en el área está desactivado pordefecto a partir de 4D v15. El cursor del ratón muestra ahora un icono de prohibido cuando el usuario intenta soltar un archivo o

una URL en el área.

En versiones anteriores, era necesario instalar un filtro específico, utilizando por ejemplo WA SET URL FILTERS, para evitar estetipo de acciones.

Si desea permitir esta funcionalidad en las aplicaciones 4D, es necesario definir una nueva preferencia de área web: wa enable urldrop.

Nuevo selector

Una nueva preferencia está disponible en el parámetro selector para el comando WA SET PREFERENCE para permitir soltar unaURL o un archivo en el área web:

Constante Tipo Valor ComentarioWA enable URL drop Entero largo 101 Allow the drop of a URL or file in the Web area (default = False)

Permite soltar una URL o un archivo en el área web (por defecto = false) [#/table]

Si desea activar soltar una URL en el área web, esta preferencia se debe definir antes de cargar una URL, preferiblemente durante elevento de formulario On load.

Ejemplo

Para activar la URL suéltela en el área web 'myarea':

WA SET PREFERENCE(*;"myarea";WA enable URL drop;True)

- 68 -

Page 69: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

WEB SET HTTP HEADER

WEB SET HTTP HEADER ( encabezado | arrayCampos {; arratValores} )

Encabezado Server modificable

Originalmente introducido en 4D v14 R3El comando WEB SET HTTP HEADER se puede utilizar para definir el campo Server del encabezado de la respuesta enviada por4D a los clientes Web. En versiones anteriores, este encabezado era definido automáticamente por 4D y no podía modificarse.

- 69 -

Page 70: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

Clickcount

Clickcount -> Resultado Parámetro Tipo DescripciónResultado Entero largo Número de clics consecutivos

Descripción

Originalmente introducido en 4D v14 R5Tema: Eventos formularioEl nuevo comando Clickcount devuelve, en el contexto de un evento clic, el número de veces que el usuario ha hecho clic de manerarepetida con el mismo botón del ratón. Normalmente, este comando devuelve 2 para un doble clic.Este comando le permite detectar doble clics en los encabezados o pies de página del listbox, y también para manejar lassecuencias de triples clics o más.Cada clic genera un evento clic separado. Por ejemplo, si un usuario hace doble clic, un evento es generado por el primer clic en elcual Clickcount devuelve 1; luego otro evento es generado por el segundo clic, en el cual Clickcount devuelve 2.Este comando sólo debe ser utilizado en el contexto de los eventos de formulario On Clicked, On Header Click u On Footer Click. Portanto, es necesario verificar en modo Diseño que el evento apropiado ha sido seleccionado correctamente en las propiedades delformulario y/o para el objeto específico.Cuando ambos eventos formulario On Clicked y On Double Clicked están activos, la siguiente secuencia será devuelta porClickcount:

1 en el evento On Clicked2 en el evento On Double Clicked2+n en el evento On Clicked

Ejemplo 1

La estructura de código siguiente se puede colocar en un encabezado de listbox para manejar clics simples y dobles:

Case of :(Form event=On Header Click) Case of :(Clickcount=1) ... //single-click action :(Clickcount=2) ... //double-click action End case End case

Ejemplo 2

Las etiquetas no son editables pero lo son después de un triple-clic. Si desea permitir a los usuarios editar las etiquetas, puedeescribir el método objeto siguiente:

If(Form event=On Clicked) Case of :(Clickcount=3) OBJECT SET ENTERABLE(*;"Label";True) EDIT ITEM(*;"Label") End case End if

- 70 -

Page 71: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

EXPORT STRUCTURE

EXPORT STRUCTURE ( estructura XML ) Parámetro Tipo Descripciónestructura XML Variable texto Definición XML exportada de la estructura de la base 4D

Descripción

Originalmente introducido en 4D v14 R4Tema: Estructura AccesoEl nuevo comando EXPORT STRUCTURE exporta en estructuraXML la definición de la estructura de la base de datos 4D actual enformato XML. Este comando utiliza los mismos mecanismos que el comando de menú Exportar > Definición de estructura aarchivo XML... que está disponible en la interfaz de modo Diseño 4D (ver Exportar e importar las definiciones de estructura).En estructuraXML, se pasa una variable texto para ser llenada con la definición de estructura. La definición exportada incluye tablas,campos, índices y relaciones, junto con sus atributos y las diversas características que son necesarias para una definición completade la estructura. Los elementos invisibles se exportan y etiquetan con los atributos apropiados. Los elementos eliminados, sinembargo, no se exportan.La "gramática" interna de las definiciones de la estructura 4D se documenta a través de archivos DTD, también utilizados para lavalidación de archivos XML.Los archivos DTD utilizados por 4D se agrupan en la carpeta DTD, que se encuentra junto a la aplicación4D. Los archivos base_core.dtd y common.dtd son utilizados para la definición de la estructura. Para obtener más informaciónacerca de las definiciones de estructura 4D, no dude en consultar estos archivos, así como también los comentarios que contienen.

Ejemplo

Usted desea exportar la estructura de la base a un documento de texto:

C_TEXT($vTStruc) EXPORT STRUCTURE($vTStruc) TEXT TO DOCUMENT("myStructure.xml";$vTStruc)

- 71 -

Page 72: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

Find in sorted array

Find in sorted array ( array ; valor ; > or < {; posPrim {; posUlt}} ) -> Resultado Parámetro Tipo Descripciónarray Array Array a buscarvalor Expresión Valor del mismo tipo a buscar en el array> or < Operador > si array se ordena en orden ascendente, < si se ordena en orden descendenteposPrim Entero

largoPosición de su primera ocurrencia si se encuentra el valor; de lo contrario la posición donde debería insertarse elvalor

posUlt Enterolargo

Posición de su última ocurrencia si no se encuentra el valor; de lo contrario igual posPrim

Resultado Booleano True si por lo menos un elemento en el array coincide con el valor, False en caso contrario

Descripción

Originalmente introducido en 4D v14 R4Tema: ArraysEl nuevo comando Find in sorted array devuelve true si al menos un elemento en el array ordenado con el valor y opcionalmentedevuelve la posición de los elementos correspondientes. A diferencia de Find in array, Find in sorted array sólo funciona con unarray ordenado y ofrece información sobre la posición de las ocurrencias, lo que le permite insertar elementos si es necesario.El array debe estar ya ordenado y debe coincidir con el orden especificado por el parámetro > or < (es decir, el símbolo "mayor que"para el orden ascendente y el símbolo "menor que" para el orden descendente). El comando Find in sorted array tomará ventaja dela ordenación y uso de un algoritmo de búsqueda binaria, que es mucho más eficiente para grandes arrays (para más información,consulte la página algoritmo de búsqueda binaria en Wikipedia). Sin embargo, si el array no está ordenado correctamente, elresultado puede ser incorrecto.El comando ignorará la indicación de ordenación y se comporta como un Find in array estándar (búsqueda secuencial, devolviendo-1 para posPrim y posUlt si no se encuentra el valor) en cualquiera de los siguientes casos:

si el tipo de array no se puede ordenar (por ejemplo arrays puntero),si el array es de tipo booleano (no preciso),si la base de datos no es Unicode (modo compatibilidad) y el array es una cadena o array texto,cuando se busca en un array text para una cadena que incluye un comodín ('@') al principio o en el medio de la cadena(utilizando una búsqueda binaria con un carácter comodín no es posible porque los elementos correspondientes pueden no sercontiguos en el array).

En caso de que el comando devuelva False, el valor devuelto en posPrim se puede pasar a INSERT IN ARRAY para insertar elvaloren el array manteniendo el array ordenado. Esta secuencia es más rápida que la inserción de un nuevo elemento al final delarray y luego llamar a SORT ARRAY para moverlo al lugar correcto. El valor devuelto en posUlt se puede combinar con el valor devuelto en posPrim para iterar sobre cada elemento del arraycorrespondiente al valor (vía un For...End for) o para encontrar el número total de ocurrencias (como lo encontraría el comandoCount in array, más rápidamente).

Ejemplo 1

Usted desea insertar un valor, si es necesario, manteniendo el array ordenado:

C_LONGINT($pos) If(Find in sorted array($array ;$value ;>;$pos) ALERT("Found at pos "+String($pos)) Else INSERT IN ARRAY($array ;$pos) $array{$pos}:=$value End if

Ejemplo 2

Usted quiere encontrar el número de ocurrencias de las cadenas que comienzan por "test" y crear una cadena que concatena todosestos elementos:

C_LONGINT($posFirst ;$posLast)

- 72 -

Page 73: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

C_TEXT($output) If(Find in sorted array($array ;"test@";>;$posFirst ;$posLast)) $output:="Found "+String($posLast-$posFirst+1)+" results :\n" End if For($i ;$posFirst ;$posLast) $output:=$output+$array{$i}+"\n" End for

- 73 -

Page 74: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

Get database measures

Get database measures {( opciones )} -> Resultado Parámetro Tipo Descripciónopciones Objeto Opciones de retornoResultado Objeto Objeto que contiene información de la base

Descripción

Originalmente introducido en 4D v14 R3, modificado en 4D v14 R5

Tema: Entorno 4D

El comando Get database measures le permite obtener información detallada acerca de los eventos del motor de base de datos4D. La información reenviada incluye los accesos lectura/escritura a los datos desde/hacia el disco o la memoria caché, así comotambién la utilización de los índices de la base, las búsquedas y las ordenaciones. Get database measures devuelve un único objeto que contiene todas las medidas relevantes. El parámetro opciones le permiteconfigurar las opciones para la información devuelta.

Presentación del objeto devuelto El objeto devuelto contiene una sola propiedad llamada "DB", que tiene la siguiente estructura básica:

{ "DB": { "diskReadBytes": {…}, "cacheReadBytes": {…}, "cacheMissBytes": {…}, "diskWriteBytes": {…},

"diskReadCount": {…}, "cacheReadCount": {…}, "cacheMissCount": {…}, "diskWriteCount": {…},

"dataSegment1": {…}, "indexSegment": {…},

"tables": {…}, "indexes": {…}

}}

Este objeto está compuesto de ocho propiedades que contienen las medidas básicas ("diskReadBytes", "cacheReadBytes","cacheMissBytes", "diskWriteBytes", "diskReadCount", "cacheReadCount", "cacheMissCount", "diskWriteCount") y propiedadesadicionales ("dataSegment1 "," indexSegment ", "tables", "index") que también pueden contener propiedades elementales, pero a unnivel diferente y con un alcance diferente (ver más adelante).

Nota: una propiedad sólo está presente en el interior del objeto si éste recibe contenido. Cuando una propiedad no tiene ningúncontenido, no está incluida en el objeto. Por ejemplo, si la base se ha abierto en modo de sólo lectura y los índices no se hanutilizado, el objeto devuelto no contendrá "diskWriteBytes", "diskWriteCount", "indexSegment" e "indexes".

Propiedades elementales Las propiedades elementales se pueden encontrar en los diferentes niveles del objeto DB. La propiedades elementales devuelven lamisma información pero con alcances diferentes. Esta es una descripción de las propiedades elementales:

- 74 -

Page 75: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

Nombre Información devueltadiskReadBytes Bytes leídos desde el discocacheReadBytes Bytes leídos desde la cachécacheMissBytes Bytes faltantes de la cachédiskWriteBytes Bytes escritos en el discodiskReadCount Acceso en lectura desde el discocacheReadCount Acceso en lectura desde la cachécacheMissCount Acceso de lectura faltante en la cachédiskWriteCount Acceso en escritura en el disco

Las ocho propiedades elementales tienen la misma estructura del objeto, por ejemplo:

"diskReadBytes": { "value": 33486473620, "history": [ // optional {"value": 52564,"time": -1665}, {"value": 54202,"time": -1649}, … ] }

"value" (número): la propiedad "value" contiene un número que representa o bien una cantidad de bytes o un conteo deaccesos. Básicamente, este valor es la suma de los valores del objeto "history" (aunque el objeto "history" no esté presente).

"history" (array de objetos): el array de objetos "history" es una compilación de valores de eventos agrupados por segundo. Lapropiedad "history" sólo está presente si se solicita a través del parámetro opciones (ver a continuación). El array history tendrá unmáximo de 200 elementos. Cada elemento del array es en sí mismo un objeto que contiene dos propiedades: "value" y "time".

"value" (número): cantidad de bytes o accesos manipulados durante el período de tiempo designado en la propiedad "time"asociada.

"time" (número): número de segundos transcurridos desde que se ha llamado la función. En el ejemplo anterior ("time": -1649)significa 1649 segundos atrás (o más precisamente entre 1649 y 1650 segundos). Durante este período de un segundo, 54,202bytes se han leído en el disco. El array history no contiene valores secuenciales (-1650, -1651, -1652, etc.) El valor anterior es -1665, lo que significa que nada seleyó en el disco en el período de 15 segundos entre 1650 y 1665. Nota: Por defecto, el array contendrá solamente información útil.Dado que el tamaño máximo del array es 200, si la base de datos se utiliza intensivamente (algo se lee cada segundo en el disco), lalongitud máxima de la h6istoria será de 200 segundos. Por otro lado, si casi no pasa nada, excepto, por ejemplo, una vez cada 3minutos, la longitud de la historia será de 600 minutos (3*200). Este ejemplo puede ser representado en el siguiente diagrama:

dataSegment1 y indexSegment Las propiedades "dataSegment1" e "indexSegment" pueden contener hasta cuatro propiedades elementales (cuando estándisponibles):

"dataSegment1": { "diskReadBytes": {…}, "diskWriteBytes": {…}, "diskReadCount": {…}, "diskWriteCount": {…} },"indexSegment": { "diskReadBytes": {…}, "diskWriteBytes": {…},

- 75 -

Page 76: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

"diskReadCount": {…}, "diskWriteCount": {…} }

Estas propiedades devuelven la misma información que las propiedades elementales, pero detallada para cada archivo de la base:

"dataSegment1" representa el archivo de datos .4dd en el disco"indexSegment" representa el archivo de índice .4dx en el disco

Por ejemplo, se puede obtener el siguiente objeto:

{ "DB": { "diskReadBytes": { "value": 718260 }, "diskReadCount": { "value": 229 }, "dataSegment1":{ "diskReadBytes": { "value": 679092 }, "diskReadCount": { "value": 212 } },"indexSegment": { "diskReadBytes": { "value": 39168 }, "diskReadCount": { "value": 17 } }

Los valores devueltos corresponden a las fórmulas siguientes:diskReadBytes.value = dataSegment1.diskReadBytes.value + indexSegment.diskReadBytes.valuediskWriteBytes.value = dataSegment1.diskWriteBytes.value + indexSegment.diskWriteBytes.value diskReadCount.value = dataSegment1.diskReadCount.value + indexSegment.diskReadCount.valuediskWriteCount.value = dataSegment1.diskWriteCount.value + indexSegment.diskWriteCount.value

tables La propiedad "tables" contiene tantas propiedades como tablas que hayan sido accedidas, ya sea en modo de lectura o escrituradesde la apertura de la base. El nombre de cada propiedad es el nombre de la tabla en cuestión. Por ejemplo:

"tables": { "Employees": {…) "Companies": {…) }

Cada objeto "table" contiene hasta 12 propiedades:

Las primeras ocho propiedades son las propiedades elementales (ver más arriba) con los valores relacionados a la tablaimplicada.Las otras dos propiedades, "records" y "blobs", también tienen las mismas ocho propiedades elementales, pero limitadas aciertos tipos de campos:

La propiedad "records" se refiere A todos los campos de la tabla (cadenas, fechas, números, etc.) a excepción de texto,imágenes y BLOBs.

La propiedad "blobs" se refiere a los campos de tipo texto, imagen y BLOB de la tabla.Una o dos propiedades adicionales, "fields" y "queries", también pueden estar presentes en función de las búsquedas y lasordenaciones realizadas en la tabla concerniente:

La propiedad "fields" contiene el mayor número de atributos "nombre de campo" (que también son sub-objetos) como elnúmero de campos que se utilizan para las búsquedas u ordenaciones.Cada objeto nombre de campo contiene:

un objeto "queryCount" (con o sin historia, dependiendo del parámetro opciones) si una búsqueda se ha realizadoutilizando este campoy/o un objeto "sortCount" (con o sin historia, dependiendo del parámetro opciones) si una ordenación se harealizado utilizando este campo.

Este atributo no se basa en el uso de índices; Todos los tipos de búsquedas y de ordenaciones se tienen en cuenta.Ejemplo: desde el lanzamiento de la base, varias búsquedas y ordenaciones se han llevado a cabo utilizando los camposCompID, Name y FirstName. TEl objeto devuelto contiene el siguiente sub-objeto "fields" (opciones con ruta y sinhistorial):

{ "DB": { "tables": { "Employees": { "fields": { "CompID": { "queryCount": { "value": 3 } }, "Name": { "queryCount": { "value": 1 }, "sortCount": { "value": 3 } }, "FirstName": { "sortCount": { "value": 2 } } (...)

Nota: el atributo "fields" se crea únicamente si una búsqueda o una ordenación se ha efectuado en la tabla; de locontrario este atributo no estará presente.

"queries" es un array de objetos que ofrece una descripción de cada búsqueda realizada en la tabla. Cada elemento del arraycontendrá tres atributos:

"queryStatement" (cadena): cadena de búsqueda (que contienen los nombres de los campo, pero no los valoresbuscados). Por ejemplo: "(Companies.PK_ID != ?)""queryCount" (objeto):

"value" (número): número de veces que la cadena de búsqueda se ha ejecutado, sin importar los valores buscados."history" (array de objetos) (si se solicita en opciones): propiedades del historial estándar "value" y "time"

"duration" (objeto) (si "value" es >0)"value" (número): número de milisegundos

- 76 -

Page 77: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

"history" (array de objetos) (si se solicita en opciones): propiedades del historial estándar "value" y "time"

Ejemplo: desde el momento en que se lanza la base, una sola búsqueda se ha realizado en la tabla Employees (opciones soncon ruta y con historial):

{ "DB": { "tables": { "Employees": { "queries": [ { "queryStatement": "(Employees.Name == ?)", "queryCount": {<p> "value": 1, "history": [ { "value": 1, "time": -2022 } ] }, "duration": { "value": 2, "history": [ { "value": 2, "time": -2022 } ] } }, (...)

Nota: el atributo "queries" se crea cuando al menos una búsqueda se ha efectuado en la tabla.

indexes Este es el objeto más complejo. Todas las tablas a las cuales se ha tenido acceso utilizando uno o varios de sus índices sealmacenan como propiedades y en el interior de las propiedades, también se incluyen los nombres de los índices utilizados comopropiedades. Los índices de palabras claves aparecen por separado y sus nombres están seguidos por "(Keyword)". Por último,cada objeto nombre de índice contiene los ocho propiedades elementales relacionadas con este índice así como también un máximode cuatro sub-objetos en función del uso del índice de la base desde su lanzamiento (cada sub-objeto sólo existe si al menos unaoperación correspondiente se ha realizado en algún momento desde el lanzamiento de la base).

Ejemplo: desde el lanzamiento de la base, varios índices del campo [Employees] EmpLastName han sido solicitados. Además, 2registros fueron creados y 16 se suprimieron en la tabla [Companies]. Esta tabla tiene un campo "name" que está indexado. La tablatambién se ha consultado y ordenado utilizando este campo. El objeto resultante contendrá:

"indexes": { "Employees": { "EmpLastName": { "diskReadBytes": {…}, "cacheReadBytes": {…}, "cacheMissBytes": {…}, "diskWriteBytes": {…}, "diskReadCount": {…}, "cacheReadCount": {…}, "cacheMissCount": {…}, "diskWriteCount": {…} } "EmpLastName (Keyword)":{...}, "index3Name": {…}, "index4Name": {…}, … } "Companies": { "Name": (...) "queryCount": { "value": 41 }, "sortCount": { "value": 3 }, "insertKeyCount": { "value": 2 }, "deleteKeyCount": { "value":16 } table3Name: {…} }

Parámetro options El parámetro opciones le permite personalizar la información real que devuelve el comando. En opciones, se pasa un objeto quepuede contener hasta tres propiedades: "withHistory", "historyLength" y "path".

Propiedad Tipo Descripción

"withHistory" Booleano "true" significa que el objeto "history" será devuelto por la función dentro del objeto devuelto;"false" significa que el objeto devuelto por la función no contendrá el objeto "history"

"historyLength" número Define el tamaño del array history devuelto en segundos(*).

"path" cadena|arrayde cadenas

Ruta completa de la propiedad específica o array de rutas completas de las propiedadesespecíficas que desea obtener. Si pasa una cadena, sólo el valor correspondiente se devuelveen el objeto "DB" (si la ruta es válida). Ejemplo "DB.tables.Employees.records.diskWriteBytes".Cuando se pasa un array de cadenas, todos los valores correspondientes son devueltos en elobjeto "DB" (si las rutas son válidas). Ejemplo: ["DB.tables.Employee.records.diskWriteBytes","DB.tables.Employee.records.diskReadCount","DB.dataSegment1.diskReadBytes"]

(*) Como se describió anteriormente, la historia no se almacena como una secuencia de segundos, sino sólo con valores relevantes.Si no ocurre nada durante un par de segundos o más, nada se almacena y una brecha aparecerá en el array de historial interno."time" puede contener, por ejemplo, -2, -4, -5, -10, -15, -30 con valores de 200, 300, 250, 400, 500,150. Si la propiedad"historyLength" está definida en 600 (10 minutos), luego el array devuelto contendrá 0, -1, -2, -3 ... -599 para "time" y sólo los valores -2, -4, - 5, -10, -15, -30 se llenarán. Todos los demás valores se pondrán en 0 (cero) como valor. También como se describióanteriormente, el único límite del array interno es el tamaño (200), no el tiempo. Esto significa que si hay una baja actividad para unapropiedad específica, el tiempo más antiguo puede ser muy grande (por ejemplo: -3600 para hace una hora). También puedecontener menos de 200 valores si la base se acaba de iniciar. En estos casos, si el tiempo del historial interno es menor al solicitadoo si todos los valores importantes que ya se han definido en el array devuelto, el valor devuelto será -1.Ejemplo: la base sólo se inició hace 20 segundos y la historia de la petición es de 60 segundos. Los valores devueltos entre 0 y -20se definen con valores o ceros y los otros se establecerán con -1. Cuando un valor "-1" se devuelve, esto significa que, o bien eltiempo de solicitud es demasiado antiguo o que el valor ya no está en el array de historia interna (es decir, se ha llegado al límite delos 200 elementos y se han eliminado los valores mayores).

Cliente/servidor y componentes Este comando devuelve la información sobre el uso de la base de datos. Esto significa que le devuelve un objeto válido con valoresrelevantes sólo cuando se le llama:

en modo local 4D (si se llama desde un componente, devuelve información acerca de la base de datos del host)en el servidor en modo cliente/servidor.

- 77 -

Page 78: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

Si el comando se llama desde un 4D remoto, luego el objeto se deja vacío. En este contexto, si necesita obtener información acerca de la base de datos en el servidor, la forma más sencilla de realizar estaacción es crear un método con la opción "ejecutar en el servidor" activada. Este principio también funciona para un componente: si el componente se utiliza en un contexto local 4D, devolverá la informaciónsobre la base local; en un contexto 4D remoto, devolverá la información sobre la base del servidor.

Ejemplo 1

Usted desea obtener el objeto "history" en el objeto devuelto:

C_OBJECT($param) C_OBJECT($measures) OB SET($param;"withHistory";True) $measures:=Get database measures($param)

Ejemplo 2

Sólo queremos saber el número total de bytes leídos en la memoria caché ("cacheReadBytes"):

C_OBJECT($oStats) C_OBJECT($oParams) OB SET($oParams;"path";"DB.cacheReadBytes") $oStats:=Get database measures($oParams)

El objeto devuelto contiene, por ejemplo:

{ "DB": { "cacheReadBytes": { "value": 9516637 } } }

Ejemplo 3

Queremos obtener las medidas de bytes de caché en los últimos dos minutos:

C_OBJECT($oParams) C_OBJECT($measures) OB SET($oParams;"path";"DB.cacheReadBytes") OB SET($oParams;"withHistory";True) OB SET($oParams;"historyLength";2*60) $measures:=Get database measures($oParams)

- 78 -

Page 79: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

Get locked records info

Get locked records info ( laTabla ) -> Resultado Parámetro Tipo DescripciónlaTabla Tabla Tabla para la cual usted quiere conocer los registros bloqueadosResultado Objeto Descripción de los registros bloqueados (si los hay)

Descripción

Originalmente introducido en 4D v14 R3Tema: Registros (bloqueo)El nuevo comando Get locked records info devuelve un objeto que contiene diferente información sobre los registros bloqueadosactualmente en aTabla.

El objeto devuelto contiene una propiedad "registros", que es un array de objetos:

{ "records": [ objeto descripción, (…) ]}

Cada elemento del array "description object" identifica un registro bloqueado en la tabla especificada y contiene las siguientespropiedades:

Propiedad Tipo Descripción

contextID UUID(Cadena) UUID del contexto de la base responsable del bloqueo

contextAttributes ObjetoObjeto que contiene la misma información que el comando LOCKED BY aplicado al registro, ladiferencia es que Get locked records info devuelve el nombre de usuario definido en el sistema yno el del usuario 4D (ver más adelante).

recordNumber Enterolargo Número de registro del registro bloqueado

Nota: para más claridad, el comando LOCKED ATTRIBUTES ha sido renombrado LOCKED BY a partir de 4D v14 R3.El objeto contextAttributes se compone de las siguientes propiedades:

task_id: número de referencia del procesouser_name: nombre del usuario definido en el sistema operativouser4d_id: número del usuario 4Dhost_name: nombre de la máquina localtask_name: nombre del procesoclient_version: versión de la aplicación cliente

Nota: puede obtener el nombre de usuario 4D a partir del valor de user4d_id utilizando el siguiente código:

GET USER LIST($arrNames;$arrIDs) $4DUserName:=Find in array($arrIDs;user4d_id)

Nota: el comando funciona únicamente con 4D y 4D Server. Siempre devuelve un objeto no válido cuando se llama desde un 4Dremoto o un componente. Sin embargo, se le puede llamar en estos contextos, si se activa la opción "Ejecutar en el servidor". Eneste caso, el objeto devuelto contendrá, respectivamente, la información sobre el servidor o la base local.

Ejemplo

Ejecute el siguiente código:

$vOlocked :=Get locked records info([Table])

Si dos registros están bloqueados en la tabla [Table], el siguiente objeto se devuelve en $vOlocked:

{ "records": [

- 79 -

Page 80: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

{ "contextID": "A9BB84C0E57349E089FA44E04C0F2F25", "contextAttributes": { "task_id": 8, "user_name": "roland", "user4d_id": 1, "host_name": "iMac de roland", "task_name": "P_RandomLock", "client_version": -1342106592 }, "recordNumber": 1 }, { "contextID": "8916338D1B8A4D86B857D92F593CCAC3", "contextAttributes": { "task_id": 9, "user_name": "roland", "user4d_id": 1, "host_name": "iMac de roland", "task_name": "P_RandomLock", "client_version": -1342106592 }, "recordNumber": 2 } ]}

Si el código se ejecuta en un 4D Server y el bloqueo es causado por una máquina cliente remota, el siguiente objeto es devuelto en$vOlocked:

{ "records": [ { "contextID": "B0EC087DC2FA704496C0EA15DC011D1C", "contextAttributes": { "task_id": 2, "user_name": "achim", "user4d_id": 1, "host_name": "achim-pcwin", "task_name": "P_RandomLock", "is_remote_context": true, "client_uid": "0696E66F6CD731468E6XXX581A87554A", "client_version": -268364752 }, "recordNumber": 1 } ]}

- 80 -

Page 81: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

IMPORT STRUCTURE

IMPORT STRUCTURE ( xmlEstructura ) Parámetro Tipo DescripciónxmlEstructura Texto Definición XML de una estructura de base de datos 4D

Descripción

Originalmente introducido en 4D v14 R4Tema: Acceso de estructuraEl nuevo comando IMPORT STRUCTURE le permite importar, en la base actual, la definición de la estructura XML 4D que se pasóen xmlEstructura.El parámetro xmlEstructura debe contener una definición de estructura 4D válida en formato XML. Puede obtener una definición deestructura utilizando una de las siguientes funcionalidades:

ejecute el nuevo comando EXPORT STRUCTURE,seleccione el comando de menú Exportar > Definición de estructura para archivo XML... disponible en la interfaz de modo4D Diseño (ver Exportar e importar las definiciones de estructura),crear o editar un archivo XML personalizado basado en DTDs públicos que se pueden encontrar en la carpeta "DTD" de laaplicación 4D.

La definición de estructura importada se añade a la actual y se muestra en el editor de estructura 4D estándar, entre las tablasexistentes (si las hay). Si una tabla importada tiene el mismo nombre que una tabla local, se genera un error y se cancela laoperación de importación.También puede importar la estructura en una base de datos vacía, creando así una nueva base de datos.Se genera un error si la estructura está en modo compilado o de sólo lectura. Además, no se puede llamar desde una aplicaciónremota 4D.

Ejemplo

Usted desea importar una definición de estructura guardada en la base actual:

$struc:=Document to text("c:\\4DStructures\\Employee.xml") IMPORT STRUCTURE($struc)

- 81 -

Page 82: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

LISTBOX GET CELL COORDINATES

LISTBOX GET CELL COORDINATES ( {* ;} objeto ; columna ; linea ; izq ; arriba ; der ; inf ) Parámetro Tipo Descripción* Operador Si se especifica = objeto es un nombre de objeto (cadena) Si se omite, objeto es una variableobjeto Objeto de formulario Nombre de objeto (si se especifica *) o variable (si se omite *)columna Entero largo Número de columnalinea Entero largo Número de líneaizq Entero largo Coordenada izquierda del objetoarriba Entero largo Coordenada superior del objetoder Entero largo Coordenada derecha del objetoinf Entero largo Coordenada inferior del objeto

Descripción

Originalmente introducido en 4D v14 R5El comando LISTBOX GET CELL COORDINATES devuelve en las variables o campos izq, arriba, der y inf las coordenadas (enpuntos) de la celda designada por los parámetros columna y linea, en el list box definido por * y objeto.Si pasa el parámetro opcional *, indica que el parámetro objeto es un nombre de objeto (una cadena). Si no pasa el parámetroopcional *, indica que el objeto es un campo o una variable. En este caso, se pasa una referencia de campo o variable (campo ovariable de tipo de objeto únicamente) en lugar de una cadena.Por consistencia con el comando OBJECT GET COORDINATES, el origen es la esquina superior izquierda del formulario quecontiene la celda. Además, las coordenadas devueltas son teóricas; que tienen en cuenta el estado de desplazamiento del list boxantes de que ocurra cualquier recorte. Como resultado, la celda puede ser no visible (o sólo parcialmente) en sus coordenadas, yestas coordenadas puede estar fuera de los límites del formulario (o incluso negativas). Para saber si la celda es visible (y que partede ella es visible) es necesario comparar las coordenadas devueltas con las coordenadas del listbox, teniendo en cuenta lassiguientes reglas:

Todas las celdas se cortan con las coordenadas de su list box padre (como los devueltos por OBJECT GET COORDINATESen el list box).Los Sub-objetos encabezado y pie de página se muestran sobre el contenido de la columna: cuando las coordenadas de unacelda se cruzan las coordenadas de las líneas de encabezado o pie de página, la celda no se muestra en esta intersección.Los elementos de las columnas bloqueadas se muestran sobre los elementos de las columnas desplazables: cuando lascoordenadas de un elemento en una columna desplazable cruzan las coordenadas de una columna bloqueada, entonces queno se muestra en esta intersección.

Para más información, consulte la descripción del comando OBJECT GET COORDINATES.

Ejemplo

Usted quiere dibujar un rectángulo rojo alrededor de la celda seleccionada de un listbox:

OBJECT SET VISIBLE(*;"RedRect";False) //inicializar un rectángulo rojo //el rectángulo ya está definido en alguna parte del formulario LISTBOX GET CELL POSITION(*;"LB1";$col;$raw) LISTBOX GET CELL COORDINATES(*;"LB1";$col;$raw;$x1;$y1;$x2;$y2) OBJECT SET VISIBLE(*;"RedRect";True) OBJECT SET COORDINATES(*;"RedRect";$x1;$y1;$x2;$y2)

- 82 -

Page 83: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

METHOD GET ATTRIBUTES

METHOD GET ATTRIBUTES ( ruta ; atributos {; *} ) Parámetro Tipo Descripciónruta Texto, Array

textoRutas de los métodos

atributos Objeto, Arrayobjeto

Atributos de los métodos seleccionados

* Operador Si se pasa = el comando se aplica a la base local cuando se ejecuta desde un componente (parámetroignorado fuera de este contexto)

Descripción

Tema: Acceso objetos diseñoEl nuevo comando METHOD GET ATTRIBUTES devuelve, en atributos, el valor actual de todos los atributos para los métodosespecificados en el parámetro ruta.Este comando sólo funciona con métodos proyecto. Si pasa una ruta no válida, se genera un error.En ruta, puede pasar ya sea un texto que contenga una ruta de método, o un array texto que contenga un array de rutas. Debe pasarel mismo tipo de parámetro (variable o array) en atributos con el fin de obtener los atributos apropiados.En atributos, pase un objeto o un array de objetos, dependiendo del tipo de parámetro pasado en ruta. Todos los atributos para elmétodo se devuelven como propiedades de objeto, con los valores "True"/"False" para los atributos Booleanos y los valoresadicionales si es necesario (por ejemplo, "scope":"table" para la propiedad 4D Mobile).Si el comando se ejecuta desde un componente, por defecto se aplica a los métodos del componente. Si pasa el parámetro *,accede a los métodos de la base local.Nota: el comando existente METHOD Get attribute aún se soporta pero como sólo puede devolver valores booleanos, no puedeser utilizado para atributos extendidos, tales como las propiedades 4D Mobile.

Ejemplo

Usted quiere obtener los atributos del método de proyecto sendMail. Puede escribir:

C_OBJECT($att) METHOD GET ATTRIBUTES("sendMail";$att)

Después de la ejecución, $att contiene, por ejemplo:

{ "invisible":false, "publishedWeb":false, "publishedSoap":false, "publishedWsdl":false, "shared":false, "publishedSql":false, "executedOnServer":false, "published4DMobile":{ "scope":"table", "table":"Table_1" } }

- 83 -

Page 84: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

METHOD SET ATTRIBUTES

METHOD SET ATTRIBUTES ( ruta ; atributos {; *} ) Parámetro Tipo Descripciónruta Texto, Array

textoRutas de métodos

atributos Objeto, Arrayobjeto

Atributos a definir para los métodos seleccionados

* Operador Si se pasa = el comando se aplica a la base local cuando se ejecuta desde un componente (parámetroignorado fuera de este contexto)

Descripción

Tema: Acceso objetos diseñoEl nuevo comando METHOD SET ATTRIBUTES le permite definir los valores de los atributos para lo métodos especificados en elparámetro ruta.En ruta, puede pasar ya sea un texto que contiene una ruta de método, o un array de texto que contiene una gran variedad de rutas.Debe pasar el mismo tipo de parámetro (cadena o array) en atributos con el fin de establecer los atributos adecuados. Estecomando sólo funciona con métodos proyecto. Si pasa una ruta, no válida, se genera un error.En atributos, se pasa un objeto o un array de objetos (en función del tipo de parámetro pasado en ruta) que contiene todos losatributos que desea definir para los métodos.Los atributos de métodos deben definirse con los comandos OB SET o OB SET ARRAY, con los valores True o False para losatributos booleanos, o los valores específicos para los atributos extendidos (por ejemplo, "scope":"table" para la propiedad 4DMobile). Sólo los atributos que están presentes en el parámetro atributos se actualizarán en los atributos de los métodos.Si el comando se ejecuta desde un componente, por defecto se aplica a los métodos del componente. Si pasa el parámetro *,accede a los métodos de la base local.Nota: el comando existente METHOD SET ATTRIBUTE aún se soporta pero ya que sólo puede manejar valores booleanos, no sepuede utilizar para atributos extendidos tales como propiedades 4D Mobile.

Los atributos soportados son:

{ "invisible" : false, // true si visible "publishedWeb" : false, // true si está disponible a través delas etiquetas y URLs 4D "publishedSoap": false, // true si se ofrece como servicio web "publishedWsdl":false, // true si se ha publicado en WSDL "shared" : false, // true si es compartida por los componentes y labase local "publishedSql" : false, // true si está disponible a través de SQL "executedOnServer" : false,// true si se ejecuta en el servidor "published4DMobile" : { "scope": "table", // "none" o "table" o"currentRecord" o "currentSelection" "table": "aTableName" // presente si el alcance es diferente de"none" } }

Nota: para los atributos "published4DMobile", si el valor "table" no existe o si el "scope" no es válido, estos atributos se ignoran.

Ejemplo 1

Usted desea modificar un solo atributo:

C_OBJECT($attributes) OB SET($attributes;"executedOnServer";True) METHOD SET ATTRIBUTES("aMethod";$attributes) //solo el atributo "executedOnServer" se modifica

Ejemplo 2

Usted desea que un método no esté disponible para 4D Mobile (el valor "none" debe pasarse para el atributo "scope"):

C_OBJECT($attributes) C_OBJECT($fourDMobileAttribute) OB SET($fourDMobileAttribute;"scope";"none") OB SET($attributes;"published4DMobile";$fourDMobileAttribute) METHOD SET ATTRIBUTES("aMethod";$attributes)

- 84 -

Page 85: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

MOBILE Return selection

MOBILE Return selection ( tabla ) -> Resultado Parámetro Tipo Descripcióntabla Tabla Tabla cuya selección actual usted desea retornarResultado Objeto Wakanda-compliant selection

Descripción

Originalmente introducido en 4D v14 R3El comando MOBILE Return selection devuelve un objeto JSON que contiene la selección actual de tabla transformada en unacolección de entidades Wakanda.Este comando está destinado para ser llamado en el contexto de una conexión 4D Mobile, por lo general entre la aplicación 4D y unaaplicación Wakand (vía REST). Cuando se establece una conexión 4D Mobile y se han configurado los derechos de accesoadecuados, una aplicación Wakanda puede ejecutar un método proyecto 4D que devuelve un valor en el parámetro $0.El comando MOBILE Return selection le permite devolver en $0, la selección actual de registros de la tabla tabla, en la forma de unobjeto tipo colección de entidades en formato JSON. Este objeto es compatible con las colecciones de entidades de Wakanda quecontienen una selección de registros (es decir, de entidades).Tenga en cuenta que los accesos 4D Mobile requieren configuraciones específicas en sus bases 4D:

El servidor Web debe estar en marcha,La opción "Activar los servicios 4D Mobile" se estar seleccionada en las Propiedades de la base,Debe tener una licencia válida,Las tablas y campos utilizados deben tener seleccionada la opción "Expose para 4D Mobile" (seleccionada por defecto).Los métodos llamados deben tener la opción "Disponible vía las llamadas 4D Mobile" activa (no seleccionada por defecto).

Tenga en cuenta que puede pasar toda tabla válida de la base en tabla y no necesariamente la tabla con la que el método proyectose ha asociado en sus propiedades. Este parámetro sólo se utiliza del lado Wakanda para definir los objetos para los que se puedellamar al método.Para obtener más información sobre la configuración 4D Mobile, consulte la documentación 4D Mobile.

Ejemplo

Usted desea mostrar la selección actual de la tabla [Countries] en una rejilla Wakanda, basado en una búsqueda.

Escribe el siguiente método:

//FindCountries project method //FindCountries( string ) -> object C_TEXT($1) C_OBJECT($0) QUERY([Countries];[Countries]ShortName=$1+"@") $0:=MOBILE Return selection([Countries])

la selección devuelta puede ser utilizada directamente en Wakanda como una colección válida.

En el modelo del servidor de Wakanda conectado a 4D vía 4D Mobile, usted ha creado una página con una rejilla asociada a la tabla4D Countries. Por defecto, durante la ejecución, se muestran todas las entidades de la tabla 4D:

- 85 -

Page 86: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

El código del botón es:

button1.click = function button1_click (event) <p> { sources.countries.FindCountries("i", { //llamamosal método 4D, "i" se pasa en $1 onSuccess:function(coll){ //función de retrollamada (asíncrona),recibe $0 como parámetro sources.countries.setEntityCollection(coll.result); //remplaza lacolección de entidades actual // con la que recibe en el objeto coll.result } }); };

Como resultado, la rejilla se actualiza:

- 86 -

Page 87: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

OBJECT Get corner radius

OBJECT Get corner radius ( {* ;} objeto ) -> Resultado Parámetro Tipo Descripción* Operador Si se especifica, objeto es un nombre de objeto (cadena) Si se omite, objeto es una variable o un campoobjeto Objeto de formulario Nombre del objeto (si se especifica *) o Variable o campo (si se omite *)Resultado Entero largo Radio actual para las esquinas redondeadas (en píxeles)

Descripción

Originalmente introducido en 4D v14 R4Tema: Objetos (Formularios)El nuevo comando OBJECT Get corner radius devuelve el radio de la esquina redondeada actual del objeto rectánguloredondeado cuyo nombre pasó en objeto. Este valor puede haber sido definido a nivel del formulario utilizando la lista depropiedades (ver Formularios), o utilizando el nuevo comando OBJECT SET CORNER RADIUS para el proceso actual.Si pasa el parámetro opcional *, indica que el parámetro objeto es un nombre de objeto (cadena). Si no pasa este parámetro, indicaque el parámetro objeto es un campo o una variable. En este caso, se pasa una referencia de campo o variable (campo objeto ovariable únicamente) en lugar de una cadena.Nota: en las versiones 4D actuales, ya que este comando sólo se aplica a los rectángulos redondeados (que son objetos estáticos),debe siempre pasar el parámetro * y utilizar la sintaxis de nombre del objeto.

El comando devuelve el valor del radio en píxeles para las esquinas del objeto. Por defecto, el valor es de 5 píxeles.

Ejemplo

El siguiente código puede añadirse a un método de un botón:

C_LONGINT($radius) $radius:=OBJECT Get corner radius(*;"GreenRect") //obtiene el valor actual OBJECT SET CORNER RADIUS(*;"GreenRect";$radius+1) //aumenta el radio // El valor máximo se manejará automáticamente: cuando se alcance, el botón // no hará nada

- 87 -

Page 88: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

OBJECT SET CORNER RADIUS

OBJECT SET CORNER RADIUS ( {* ;} objeto ; radio ) Parámetro Tipo Descripción* Operador Si se especifica, objeto es un nombre de objeto (cadena) Si se omite, objeto es una variable o un campoobjeto Objeto de formulario Nombre del objeto (si se especifica *) o Variable o campo (si se omite *)radio Entero largo Nuevo radio para las esquinas redondeadas (en píxeles)

Descripción

Originalmente introducido en 4D v14 R4Tema: Objetos (Formularios)El nuevo comando OBJECT SET CORNER RADIUS le permite modificar el radio de esquina redondeada para los objetosrectángulo redondeados cuyo nombre pasó en objeto. El nuevo radio se define sólo para el proceso; no se guarda en el formulario.Si pasa el parámetro opcional *, indica que el parámetro objeto es un nombre de objeto (cadena). Si no pasa este parámetro, indicaque el parámetro objeto es un campo o una variable. En este caso, se pasa una referencia de campo o variable (campo objeto ovariable únicamente) en lugar de una cadena.Nota: en las versiones 4D actuales, como este comando sólo se aplica a rectángulos redondeados (que son objetos estáticos),siempre debe pasar el parámetro * y utilizar la sintaxis nombre del objeto.En radio, pase el nuevo valor del radio en píxeles para las esquinas del objeto. Por defecto, el valor es de 5 píxeles.Nota: este valor también se puede definir a nivel del formulario utilizando la lista de propiedades (ver Formularios).

Ejemplo

Usted tiene los siguientes rectángulos en su formulario, llamados respectivamente "Rect1" y "Rect2":

Puede ejecutar el siguiente código para cambiar su radio:

OBJECT SET CORNER RADIUS(*;"Rect@";20)

- 88 -

Page 89: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

OPEN DATABASE

OPEN DATABASE ( rutaArchivo ) Parámetro Tipo DescripciónrutaArchivo Cadena Nombre o ruta de acceso completa del archivo de base de datos a abrir (.4db, .4dc, .4dbase, o .4dlink)

Descripción

Originalmente introducido en 4D v14 R3Tema: Entorno 4DEl nuevo comando OPEN DATABASE cierra la base de datos 4D actual y abre sobre la marcha de la base definida por rutaArchivo.Este comando es útil para realizar pruebas automáticas o para volver a abrir una base de forma automática después de unacompilación.En el parámetro rutaArchivo, pase el nombre o la ruta de acceso completa de la base a abrir. Puede utilizar los archivos con una delas siguientes extensiones:

.4db (archivo de estructura interpretado),

.4dc (archivo de estructura compilado),

.4dbase (paquete OS X),

.4dlink (archivo de acceso directo).

Si pasa únicamente el nombre de archivo, debe ser colocado en el mismo nivel que el archivo de estructura de la base actual.Si la ruta de acceso establece una base de datos válida, 4D cierra la base en progreso y abre la base especificada. En el modomono usuario, el Método base On Exit de la base cerrada y el Método base On Startup de la base abierta se llamansucesivamente.Atención: dado que este comando hace que la aplicación se cierre antes de la reapertura de la base especificada, no serecomienda su uso en el Método base On Startup o en un método llamado por este método base.El comando se ejecuta de forma asíncrona: después de su llamada, 4D continúa ejecutando el resto del método. Luego, la aplicación se comporta como si el comando Salir del menú Archivo estuviera seleccionado: las cajas de diálogo deapertura se cancelan, todos los procesos abiertos tienen 10 segundos para terminar antes de ser terminados, etc.Si el archivo de la base objetivo no se encuentra o es inválido, se devuelve un error sistema estándar del administrador de archivos y4D no hace nada.Este comando se puede ejecutar desde una base de datos estándar únicamente. Si se llama desde una aplicación fusionada(monopuesto o servidor), se devuelve el error -10509 "No se puede abrir la base de datos".

Ejemplo

OPEN DATABASE("C:\\databases\\Invoices\\Invoices.4db")

- 89 -

Page 90: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

QUERY BY ATTRIBUTE

QUERY BY ATTRIBUTE ( tabla {; opConj}; campoObjeto ; rutaAtributo ; opBusq ; valor {; *} ) Parámetro Tipo Descripcióntabla Tabla Tabla para la cual devolver una selección de registros o Tabla por defecto si se omiteopConj Operador Operador a utilizar para combinar varias peticiones (si las hay)campoObjeto Campo Campo objeto cuyos atributos se deben usar para la búsquedarutaAtributo Cadena Nombre o ruta de atributoopBusq Operador, Cadena Operador de búsqueda (comparador)valor Texto, Número, Fecha, Hora Valor a comparar* Operador Bandera de continuación de la búsqueda

Descripción

Tema: Búsquedas y ordenacionesQUERY BY ATTRIBUTE busca los registros que coincidan con la cadena de consulta definida utilizando los parámetroscampoObjeto, rutaAtributo, opBusq y valor, y devuelve una selección de registros para tabla.Nota: para más información sobre los campos Objeto (nuevo en 4D v15), por favor, consulte la sección Tipo de campo Objeto.QUERY BY ATTRIBUTE cambia la selección actual de tabla para el proceso actual y vuelve el primer registro de la nueva selecciónel registro actual. Si se omite el parámetro tabla, el comando se aplica a la tabla por defecto. Si no se ha definido ninguna tabla pordefecto, se produce un error.El parámetro opcional opConj se utilizar para combinar varias llamadas a QUERY BY ATTRIBUTE en caso de búsquedasmúltiples. Los operadores de conjunción disponibles son los mismos que los del comando QUERY:

Conjunción Símbolo a utilizar con QUERY BY ATTRIBUTEAND &OR |Except #

El parámetro opConj no se utiliza para la primera llamada a QUERY BY ATTRIBUTE de una búsqueda múltiple, o si la búsqueda esuna búsqueda simple. Si lo omite dentro de una búsqueda multiple, el operador AND (&) se utiliza por defecto.En campoObjeto, pase el campo objeto cuyos atributos desea buscar. Si pertenece a una tabla Uno relacionada a tabla con unarelación automática o manual, el campoObjeto pueden pertenecer a otra tabla.En rutaAtributo, pase el nombre o la ruta del atributo cuyos valores desea comparar. Puede pasar un solo atributo, por ejemplo,"age": en este caso todos los atributos con este nombre se compararán en el registro. Puede también pasar una ruta, por ejemplo"children.girls.age", en cuyo caso sólo los atributos coincidentes serán comparados en el registro.Si un atributo "x" es un array, QUERY BY ATTRIBUTE buscará registros que contengan un atributo "x" en el cual al menos unelemento coincida con los criterios. Para buscar en atributos array, es necesario indicar al comando QUERY BY ATTRIBUTE que elatributo "x" es un array añadiendo "[]" a su nombre en rutaAtributo (ver ejemplo 3).Notas:

Tenga en cuenta que los nombres de atributos tienen en cuenta las mayúsculas y minúsculas: puede tener diferentes nombresde atributos "MyAtt" y "myAtt" en el mismo registro.Los nombres de atributos se recortan para eliminar espacios adicionales. Por ejemplo, "mi primer atributo .mi segundoatributo" se interpreta como "mi primer atributo.mi segundo atributo".

El parámetro opBusq es el operador de comparación que se aplica entre campoObjeto y valor. Puede pasar uno de los símbolosque se muestran aquí:

Comparación Símbolo a utilizar con QUERY BY ATTRIBUTEIgual a =Diferente de #Menor que <Mayor que >Menor o igual a <=Mayor o igual a >=

Nota: se puede especificar el operador de comparación como una expresión texto en lugar de un símbolo. Consulte la descripcióndel comando QUERY para más información.valor valor es el dato contra el que se va a comparar rutaAtributo. El valor que puede ser cualquier expresión del mismo tipo querutaAtributo. El valor se evalúa una vez, al inicio de la búsqueda. El valor no se evalúa para cada registro. Para buscar una cadenadentro de una cadena (una búsqueda "contains"), utilice el símbolo arroba (@) en valor para aislar la cadena a buscar, como semuestra en este ejemplo: "@Smith@". Note que en este caso, la búsqueda sólo se beneficia parcialmente desde el índice(compacidad de almacenamiento de datos).Esta es la estructura de una consulta por atributos:

- 90 -

Page 91: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

QUERY BY ATTRIBUTE([Table] ;[Table]ObjectField ;"attribute1.attribute2";=;value)

Nota: un criterio implícito para todos los operadores (excepto #) es que el campo Objeto contiene un atributo. Sin embargo, para eloperador #, puede definirse (ver más adelante).

Uso del operador # Con los campos objeto, el operador "#" debe ser visto como seleccionando los registros donde "ningún atributo" del campo contieneel valor buscado. En este contexto, 4D considera de manera similar:

los campos para las cuales el valor del atributo es diferente al valor de la búsqueda,los campos donde el atributo no está presente (o contiene un valor Null).

Por ejemplo, la siguiente búsqueda devuelve los registros de las personas que tienen un perro cuyo nombre no es Rex (y no losregistros de las personas que no tienen un perro, o que tienen un perro sin nombre):

QUERY BY ATTRIBUTE([People];[People]Animals;"dog.name";#;"Rex")

Otro ejemplo: esta búsqueda devolverá todos los registros para los que [Table]ObjectField contiene un objeto que contiene unatributo attribute1 que es en sí un objeto que contiene un atributo attribute2 cuyo valor no es el valor (no va a devolver los objetos queno contienen attribute1 o attribute2):

QUERY BY ATTRIBUTE([Table] ;[Table]ObjectField ;"attribute1.attribute2";#;value)

Este principio se aplica a los atributos array. Por ejemplo:

QUERY BY ATTRIBUTE([People];[People]OB_Field;"locations[].city";#;"paris")

Esta búsqueda devolverá los registros de las personas que no tienen una dirección en París.Para obtener específicamente los registros donde el atributo no está definido, puede utilizar un objeto vacío (ver ejemplo 2).

Crear búsquedas múltiples Aquí están las reglas a seguir para la construcción de varias búsquedas por atributo:

La primera línea no debe contener una conjunción.Cada argumento de búsqueda sucesivo puede comenzar con una conjunción. Si lo omite, el operador AND (&) se utiliza pordefecto.Todas las líneas, excepto la última, deben utilizar el parámetro *.QUERY BY ATTRIBUTE se puede combinar con los comandos QUERY (ver ejemplo).Para realizar la búsqueda, no especifique el parámetro * en el último comando QUERY BY ATTRIBUTE. Alternativamente,puede ejecutar el comando QUERY sin parámetros distintos a la tabla.

Nota: cada tabla mantiene su propia construcción de búsqueda actual. Esto significa que puede crear varias búsquedassimultáneamente, una para cada tabla.No importa la forma en que una búsqueda se haya definido:

Si la operación de búsqueda va a tomar algún tiempo para llevarse a cabo, 4D muestra automáticamente un mensaje quecontiene un termómetro de progreso. Estos mensajes se pueden activar y desactivar mediante el uso de los comandosMESSAGES ON y MESSAGES OFF. Si se muestra un termómetro de progreso, el usuario puede hacer clic en el botónDetener para interrumpir la búsqueda. Si se completa la consulta, OK toma el valor 1. De lo contrario, si la consulta seinterrumpe, OK toma el valor 0 (cero).Si no se especifica ningún campo objeto indexado, la búsqueda se optimiza cada vez que es posible (los campos indexadosse buscan primero), resultando en una búsqueda que toma la menor cantidad de tiempo posible.

Valores fecha en el objeto Las fechas se almacenan en los objetos en función de los parámetros de la base; por defecto, se tiene en cuenta la zona horaria (verel selector JSON use local time en el comando SET DATABASE PARAMETER).

!1973-05-22! -> "1973-05-21T23:00:00.000Z"

Este ajuste también se tiene en cuenta durante las búsquedas, por lo que no tiene que preocuparse por ello si siempre utiliza su baseen el mismo lugar y si los parámetros son los mismos en todos los equipos que acceden a los datos. En este caso, la siguientebúsqueda devolverá correctamente los registros cuyo atributo Birthday sea igual a !1973-05-22! (guardada como "1973-05-21T23:00:00.00Z"):

QUERY BY ATTRIBUTE([Persons];[Persons]OB_Info;"Birthday";=;!1973-05-22!)

Si no desea utilizar el parámetro GMT, puede modificar estos parámetros utilizando la siguiente instrucción:

SET DATABASE PARAMETER(JSON use local time;0)- 91 -

Page 92: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

Tenga en cuenta que el alcance de este parámetro está limitado al process. Si ejecuta esta instrucción, el 1 de octubre de 1965 sealmacenará "1965-10-01T00: 00: 00.000Z" pero usted deberá ajustar el mismo parámetro antes de lanzar sus búsquedas:

SET DATABASE PARAMETER(JSON use local time;0) QUERY BY ATTRIBUTE([Persons];[Persons]OB_Info;"Birthday";=;!1976-11-27!)

Ejemplo 1

En este ejemplo, el atributo "age" es una cadena o un entero y queremos encontrar personas cuyas edades estén entre 20 y 29. Lasprimeras dos líneas buscan el atributo como un entero (>=20 y <30) y las últimas consultan el campo como una cadena (comienza por"2" pero es diferente de "2".)

QUERY BY ATTRIBUTE([Persons];[Persons]OB_Info;"age";>=;20;*) QUERY BY ATTRIBUTE([Persons]; & ;[Persons]OB_Info;"age";<;30;*) QUERY BY ATTRIBUTE([Persons];|;[Persons]OB_Info;"age";=;"2@";*) QUERY BY ATTRIBUTE([Persons]; & ;[Persons]OB_Info;"age";#;"2") //sin * para lanzar la ejecución

Ejemplo 2

El comando QUERY BY ATTRIBUTE se puede utilizar para encontrar registros en los que algunos atributos se definen (o no). Paraello, debe utilizar un objeto vacío.

//Buscar los registros donde el correo electrónico se define en el campo objeto C_OBJECT($undefined) QUERY BY ATTRIBUTE([Persons];[Persons]Info;"email";#;$undefined)

//Buscar los registros donde el código postal no está definido en el campo objeto C_OBJECT($undefined) QUERY BY ATTRIBUTE([Persons];[Persons]Info;"zip code";=;$undefined)

Ejemplo 3

Usted quiere buscar un campo que contiene los atributos array. Con los dos registros siguientes:

{ "name":"martin", "locations" : [ { "kind":"office", "city":"paris" } ] } , { "name":"smith", "locations" : [ { "kind":"home", "city":"lyon" } , { "kind":"office", "city":"paris" } ] }

... QUERY BY ATTRIBUTE encontrará personas con una ubicación en "paris" utilizando esta instrucción:

//indica el atributo array con la sintaxis "[]" QUERY BY ATTRIBUTE([People];[People]OB_Field;"locations[].city";=;"paris") //Selecciona "martin" y "smith"

Nota: si ha definido varios criterios en el mismo atributo array, los criterios coincidentes no se aplicarán necesariamente al mismoelemento de array. En el siguiente ejemplo, la búsqueda devolverá "smith" porque tiene un elemento "locations" cuyo "kind" es"home" y un elemento "locations" cuya "city" es "paris", Incluso si no es el mismo elemento:

QUERY BY ATTRIBUTE([People];[People]OB_Field;"locations[].kind";=;"home";*) QUERY BY ATTRIBUTE([People]; & ;[People]OB_Field;"locations[].city";=;"paris") //Selecciona "smith"

- 92 -

Page 93: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

WEB Is server running

WEB Is server running -> Resultado Parámetro Tipo DescripciónResultado Booleano True si el servidor Web se está ejecutando, de lo contrario False

Descripción

Originalmente introducido en 4D v14 R2El nuevo comando WEB Is server running (tema "Servidor Web") devuelve True si el servidor web integrado 4D está corriendo yFalse si el servidor web está apagado.Este comando ofrece el estado de funcionamiento del servidor Web en el que se ejecuta:

Contexto de ejecución Devuelve el estado deAplicación independiente 4D servidor Web 4D local4D Server servidor web de 4D ServerModo remoto 4D (proceso local) servidor web 4D localModo remoto 4D (procedimiento almacenado 4D Server) servidor web 4D ServerModo remoto 4D (otro procedimiento almacenado 4D remoto) servidor web 4D remoto

Ejemplo

Usted quiere verificar que el servidor web se está ejecutando:

If(WEB Is server running) ... //hacer las acciones apropiadas End if

- 93 -

Page 94: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

4D Server

4D Server, versión 64 bits para OS X (preliminar) Página Monitor en tiempo real (MTR) Nueva capa de red ServerNet

- 94 -

Page 95: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

4D Server, versión 64 bits para OS X (preliminar)

Con 4D v15, 4D ofrece la versión final de 4D Server 64 bits para OS X (varias versiones previas ya se han publicado durante elprograma R-release 4D v14).Gracias a este nuevo producto, sus aplicaciones 4D Server ahora pueden aprovechar al máximo la potencia de las máquinas 64 bitsApple.

Para una descripción de las funcionalidades específicas de 4D Server 64 bits para OS X, consulte la sección Utilizar 4D Server 64bits para OS X en el manual de referencia de 4D Server.Nota de implementación: la parte aplicativa de 4D Server 64 bits para OS X es final, sólo la capa de red integrada ServerNet aúnnecesita un poco más de optimizaciones y actualmente se ofrece en versión preliminar. Como tal, no se recomienda desplegar 4DServer versión 64 bits para Mac OS X en producción.

Esta tabla muestra el estado actual de las funcionalidades que aún no estaban disponibles en la versión preliminar inicial de laversión 4D Server 64 bits para OS X, y que se han integrado progresivamente.

Funcionalidad/Tecnología Estado actualGráficos generados en el servidor Disponible desde v14 R4Cliente HTTP (Gestión de certificados clientes) Disponible desde v14 R44D Internet Commands (plug-in) Disponible desde v14 R44D Pack (plug-in) Disponible desde v14 R54D ODBC Pro (plug-in) Disponible en v154D for OCI (plug-in) Disponible en v15 (ver 4D for OCI)Comunicación puerto serial No disponibleCajas de diálogo de Importar/Exportar No disponibleEditor de etiquetas No disponible

- 95 -

Page 96: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

Página Monitor en tiempo real (MTR)

Introducido originalmente en 4D v14 R3La página Monitor en tiempo real (MTR) de la ventana de administración de 4D Server se ha mejorado para entregar informaciónmás detallada para la solución de problemas y optimización:

nuevas funcionalidades están disponibles (instantáneas, modo avanzado...)ahora se muestra información adicional para cada operación

Nota: el comando GET ACTIVITY SNAPSHOT también se ha extendido para devolver información adicional.

Modo Avanzado

La página RTM ahora puede mostrar información adicional, si es necesario, para cada operación listada.Para acceder al modo avanzado para una operación, presione la tecla Mayús y seleccione la operación. Toda la informacióndisponible, se muestra en el panel Detalles, sin ningún tipo de filtro (como los devueltos por el comando GET ACTIVITYSNAPSHOT). La información disponible depende de la operación seleccionada.He aquí un ejemplo de la información que se muestra en el modo estándar:

- 96 -

Page 97: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

En modo avanzado (Mayús+clic en la operación), se muestra información adicional:

Botón Instantánea

El nuevo botón Instantánea le permite copiar en el portapapeles todas las operaciones que aparecen en el panel de MTR, así comosus detalles relacionados (información de procesos y sub-operaciones):

Mostrar operaciones al menos 5 segundos

Si selecciona la nueva opción Mostrar operaciones al menos 5 segundos, todas las operaciones listadas se mostrarán en lapágina por lo menos durante cinco segundos, incluso después de que haya finalizado la ejecución de la operación:

Las operaciones retenidas aparecen en gris en la lista de operaciones.Esta funcionalidad es útil cuando se desea obtener información sobre las operaciones cuya ejecución es muy rápida.

Información adicional

Nueva información está disponible cuando se selecciona una operación en la página, en particular:

Creado en: indica si la operación resulta de una acción de un cliente (Creado en cliente) o si se ha iniciado de forma explícitaen el servidor a través de un procedimiento almacenado o por medio de la opción Ejecutar en servidor (Creado en servidor).Plan de búsqueda: siempre se muestra para las operaciones de búsqueda.otra información relacionada con la tabla, el campo, el proceso o el cliente ya está disponible, dependiendo del tipo deoperación. Tenga en cuenta que siempre se puede obtener información avanzada presionando la tecla Mayús mientrasselecciona una operación.

Mensajes de progreso eliminados

Como la página de RTM ahora reúne toda la información sobre las operaciones en curso, por defecto las ventanas de mensajes deprogreso no se muestran más en la máquina servidor. Si quiere mostrar ventanas de progreso, debe llamar al comando MESSAGES ON en el servidor.

- 97 -

Page 98: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

Nueva capa de red ServerNet

Originalmente introducido en 4D v14 R5Las aplicaciones 4D v15 contienen una nueva capa red, llamada ServerNet, para manejar las comunicaciones entre 4D Server y lasmáquinas 4D remotas (clientes). ServerNet se basa en una API moderna y robusta. Es fácil de mantener y facilita la implementaciónde las últimas tecnologías red al tiempo que ofrece un alto nivel de rendimiento.Nota de implementación: la capa de red ServerNet se ofrece en el lanzamiento "preview" en 4D v15.La antigua capa de red "legacy" aún es soportada para asegurar la compatibilidad con las bases existentes. ServerNet se utilizaautomáticamente en las nuevas bases.Las nuevas opciones le permiten activar/desactivar ServerNet.

Activar o desactivar la capa red anterior

Una nueva opción de compatibilidad le permite activar o desactivar la capa red legacy en su 4D Server en cualquier momento.Puede utilizar:

la opción Utilizar la capa de red legacy en la caja de diálogo Propiedades de la base (ver más abajo), ola constante Use legacy network layer en SET DATABASE PARAMETER (este punto se trata en la sección Get databaseparameter y SET DATABASE PARAMETER)

La nueva opción de compatibilidad se encuentra en la página Compatibilidad:

Nota: esta opción se ignora en 4D Server versión 64 bits para OS X; sólo ServerNet se puede utilizar en esta plataforma.Por defecto, esta opción está:

deseleccionada para nuevas bases creadas con 4D v1 (o 4D v14 R5) y posteriores (que utilizan la nueva capa ServerNet),seleccionada para las bases de datos existentes convertidas (utilizan la capa de red legacy).

Puede activar o desactivar la opción de ser necesario, por ejemplo, durante la fase de migración de las aplicaciones clientes (vermás abajo).Tenga en cuenta que en caso de una modificación, es necesario reiniciar la aplicación para que el cambio se tenga en cuenta.Todas las aplicaciones cliente que se han conectado también se deben reiniciar para poder conectar con la nueva capa (la versiónmínima del cliente para el uso de la capa ServerNet es 4D v14 R4, ver más abajo).

Migración de los clientes 4D fusionados

Cuando activa la capa ServerNet en su aplicación servidor, sólo las aplicaciones clientes 4D compatibles podrán conectarse:

Los clientes en versión 4D v14 R4 y superior pueden conectarse sin modificación.Los clientes en versiones anteriores (v14.x y otros releases v14 'R') primero deben actualizarse para poder conectarse alservidor.

Si su aplicación trabaja con clientes fusionados en versiones anteriores a v14 R4, y desea utilizar el mecanismo automático de 4DServer para distribuir sus aplicaciones clientes actualizadas través de la red, es necesario establecer una estrategia de migración.Esta estrategia debe basarse en los siguientes principios:

Los clientes no compatibles sólo pueden conectarse a un 4D Server que utilice la capa red legacy.Los clientes actualizados pueden adaptar su protocolo de forma dinámica para que puedan conectarse a 4D Server v15 ysiguientes, independientemente de la capa red que el servidor esté utilizando.

Su estrategia de migración debe seguir estos pasos:

1. Crear aplicaciones cliente actualizadas con 4D v15 o superiores.- 98 -

Page 99: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

2. Ejecute 4D Server v15 con el parámetro "Utilizar capa red legacy" activo.Esta configuración permite que todos los clientes se conecten.Nota: tenga en cuenta que 4D Server v15 versión de 64 bits para OS X no admite esta opción.

3. Espere un período de tiempo determinado hasta que cada cliente haya conectado y descargado la nueva versión.Esto puede durar un día, una semana o incluso más tiempo. Durante este período de transición, tanto los clientes antiguos y losnuevos pueden conectarse al servidor de red legacy.

4. Una vez que todos los clientes se han actualizado, puede desactivar la capa red legacy y finalmente cambiar a ServerNet en4D Server.

Esta estrategia se representa en el siguiente diagrama:

Registrar las peticiones de los clientes Durante el proceso de migración, le recomendamos activar el archivo de diagnóstico de 4D. Cuando se activa, 4D Server registracada solicitud de actualización de clientes en este archivo, lo que le permite controlar el proceso. Este registro no se activa pordefecto: necesita llamar al comando SET DATABASE PARAMETER con la constante Diagnostic log recording y el valor 1.

Para cada solicitud de actualización, se registra la siguiente información:

IP del clienteversión del clienteevento "Update client"

Controlar el archivo de diagnóstico también es útil después de que haya cambiado el servidor a la capa red ServerNet, paraasegurarse de que todos los clientes se actualicen correctamente. Si un cliente no compatible intenta conectarse, el servidor registrala entrada siguiente:

IP del clienteversión del clienteevento "Fail to connect"

En este caso, puede decidir, por ejemplo, actualizar al cliente de forma manual.

- 99 -

Page 100: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

4D SQL Server

Nuevo campo KEYWORD en la tabla del sistema _USER_INDEXES ALTER DATABASE DISABLE TRIGGERS ALTER TABLE DISABLE TRIGGERS Gestión del puerto ID por programación

- 100 -

Page 101: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

Nuevo campo KEYWORD en la tabla del sistema _USER_INDEXES

Originalmente introducido en 4D v14 R2Un nuevo campo booleano KEYWORD ya está disponible en la tabla de sistema _USER_INDEXES. Esto le permite distinguir entrelos índices regulares y basados en palabras claves.

_USER_INDEXES Describe los índices de usuario de la base de datosKEYWORD BOOLEAN True si el índice está basado en palabras claves, de lo contrario, false

Los índices de palabras claves pueden ser de tipo cluster o BTree.

- 101 -

Page 102: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

ALTER DATABASE DISABLE TRIGGERS

ALTER DATABASE {ENABLE | DISABLE} {INDEXES | CONSTRAINTS | TRIGGERS}

Descripción

Originalmente introducido en 4D v14 R3El comando ALTER DATABASE ahora le permite desactivar o activar los triggers para todas las tablas de la base actual durante lasesión actual (es decir, para todos los usuarios y los procesos hasta que se reinicie la base).

Si desea manejar los triggers a nivel de tabla, es necesario utilizar ALTER TABLE (ver ALTER TABLE DISABLE TRIGGERS).

Ejemplo

Ejemplo de una importación con desactivación temporal de todas las opciones SQL:

Begin SQL ALTER DATABASE DISABLE INDEXES; ALTER DATABASE DISABLE CONSTRAINTS; ALTER DATABASE DISABLE TRIGGERS; End SQL SQL EXECUTE SCRIPT("C:\\Exported_data\\Export.sql";SQL On error continue) Begin SQL ALTER DATABASE ENABLE INDEXES; ALTER DATABASE ENABLE CONSTRAINTS; ALTER DATABASE ENABLE TRIGGERS; End SQL

- 102 -

Page 103: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

ALTER TABLE DISABLE TRIGGERS

ALTER TABLE sql_name{ADD column_definition [PRIMARY KEY] [TRAILING] |DROP sql_name |ADD primary_key_definition |DROP PRIMARY KEY |ADD foreign_key_definition |DROP CONSTRAINT sql_name |[{ENABLE | DISABLE} REPLICATE] |[{ENABLE | DISABLE} LOG] |[{ENABLE | DISABLE} AUTO_INCREMENT] |[{ENABLE | DISABLE} AUTO_GENERATE] |[{ENABLE | DISABLE} TRIGGERS] |SET SCHEMA sql_name}

Descripción

Originalmente introducido en 4D v14 R3El comando ALTER TABLE ahora le permite desactivar o activar los triggers para la tabla nom_sql durante la sesión actual (esdecir, para todos los usuarios y los procesos hasta que se reinicie la base).

Si desea controlar los triggers a nivel global de la base, es necesario utilizar ALTER DATABASE (ver ALTER DATABASEDISABLE TRIGGERS).

- 103 -

Page 104: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

Gestión del puerto ID por programación

Originalmente introducido en 4D v14 R3Ahora puede obtener, definir o modificar el ID del puerto TCP del servidor SQL de 4D por programación con un nuevo parámetro dela base. Para más información, por favor consulte la sección Get database parameter y SET DATABASE PARAMETER.

- 104 -

Page 105: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

Optimizations

Caché web de 4D activada por defecto Optimizaciones del Select SQL Seguridad de red

- 105 -

Page 106: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

Caché web de 4D activada por defecto

Introducido en 4D v14 R5La caché web de 4D para los recursos estáticos está activa por defecto en las nuevas bases. En la caja de diálogo Propiedades dela base, la opción Utilizar la caché Web de 4D ahora se selecciona automáticamente para las nuevas bases:

Para bases convertidas de versiones anteriores, el valor de esta opción se deja intacto.

- 106 -

Page 107: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

Optimizaciones del Select SQL

Instrucciones SQL Select distinct

Introducido en 4D v14 R4Las operaciones SELECT DISTINCT ejecutadas a través de instrucciones SQL se han optimizado cuando se aplican a una solatabla y a una sola columna.

Típicamente, en 4D v15 y versiones posteriores, el siguiente código se ejecutará más rápido:

Begin SQL SELECT DISTINCT Names FROM Employees INTO :$Emp; End SQL

Select Group by y Order by

Introducido en 4D v14 R5Las instrucciones SQL SELECT con cláusulas GROUP BY y ORDER BY han sido optimizadas en diferentes configuraciones:

SELECT FROM GROUP BY o SELECT FROM ORDER BY aplicado a una sola tabla,SELECT FROM GROUP BY o SELECT FROM ORDER BY aplicado a varias tablas y el uso de combinaciones internas.

Las optimizaciones conciernen únicamente a las referencias de columnas simples (no expresiones).

Típicamente, en 4D v15 y versiones posteriores, los siguientes casos se ejecutarán más rápido:

Ejemplos Order by

Begin SQL DROP TABLE IF EXISTS T1; DROP TABLE IF EXISTS T2; CREATE TABLE T1 (C1 INT); CREATE TABLE T2 (C2 INT); INSERT INTO T1(C1) VALUES (1); INSERT INTO T1(C1) VALUES (2); INSERT INTO T1(C1) VALUES (3); INSERT INTO T2(C2) VALUES (2); INSERT INTO T2(C2) VALUES (3); End SQL ARRAY LONGINT($result;0) ARRAY LONGINT($result1;0) ARRAY LONGINT($result2;0) // Un ejemplo simple ORDER BY con T1 y T2. // $result contendrá [2, 3]. Begin SQL SELECT C1 FROM T1, T2 WHERE C1=C2 ORDER BY C1 INTO :$result End SQL // ORDER BY también funciona si se utilizan varias columnas. // $result1 y $result2 contendrán cada uno [2, 3]. Begin SQL SELECT C1, C2 FROM T1, T2 WHERE C1=C2 ORDER BY C1, C2 INTO :$result1, :$result2

- 107 -

Page 108: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

End SQL // Sólo las referencias de columnas simples se optimizan. Si una expresión // como se muestra a continuación (C1 + 1) si se utiliza para la selección, luego la ejecuciónno // será más rápida. $result contiene [3, 4]. Begin SQL SELECT C1 + 1 FROM T1, T2 WHERE C1=C2 ORDER BY C1 INTO :$result End SQL // Puede utilizar un índice de referencia en la selección. // Como se estableció antes, la selección sólo contiene referencias de columnas simples para unaejecución más rápida. // $result contendrá [ 2, 3 ]. Begin SQL SELECT C1 FROM T1, T2 WHERE C1=C2 ORDER BY 1 INTO :$result End SQL

Ejemplo Group by

Begin SQL DROP TABLE IF EXISTS T1; DROP TABLE IF EXISTS T2; CREATE TABLE T1 (C1 INT, C3 INT); CREATE TABLE T2 (C2 INT); INSERT INTO T1(C1, C3) VALUES (3, 1); INSERT INTO T1(C1, C3) VALUES (1, 1); INSERT INTO T1(C1, C3) VALUES (2, 1); INSERT INTO T1(C1, C3) VALUES (3, 1); INSERT INTO T1(C1, C3) VALUES (2, 1); INSERT INTO T1(C1, C3) VALUES (3, 1); INSERT INTO T2(C2) VALUES (2); INSERT INTO T2(C2) VALUES (3); End SQL ARRAY LONGINT($result;0) ARRAY LONGINT($result1;0) ARRAY LONGINT($result2;0) //Ejemplo simple de GROUP BY con T1 y T2 juntos. //$result contendrá [2, 3]. Note que no hay garantía de que los grupos se devuelvan.. //en orden ascendente, es decir, $result puede ser [3, 2]. Begin SQL SELECT C1 FROM T1, T2 WHERE C1=C2 GROUP BY C1 INTO :$result End SQL // Este es un ejemplo simple de una petición agregada. // Como C3 siempre es 1, para cada grupo (valor único de C1), // SUM(C3) es el número de repeticiones. // $result1 contendrá [2, 3]. // $result2 también contendrá [2, 3]. Begin SQL SELECT C1, SUM(C3) FROM T1, T2 WHERE C1=C2 GROUP BY C1

- 108 -

Page 109: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

INTO :$result1, :$result2 End SQL

- 109 -

Page 110: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

Seguridad de red

Desactivación de SSL v2 y v3

La configuración por defecto para las comunicaciones en red ha evolucionado con el fin de aumentar los niveles de seguridad: losprotocolos SSL v2 y SSL v3 se han desactivado permanentemente, por su potencial vulnerabilidad. Ahora sólo se acepta TLSv1 por defecto.Estas modificaciones se aplican a todas las comunicaciones seguras en 4D, incluyendo:

Conexiones al servidor HTTPConexiones al servidor SQLConexiones cliente/servidorConexiones cliente HTTP

Como resultado, es posible que tenga que actualizar sus requisitos de aplicación en relación con las siguientes conexiones:

Los navegadores o clientes HTTP que no admiten TLS, tales como IE6 o más antiguos, ya no pueden conectarse a unservidor/servicio web 4D utilizando el protocolo seguro (puerto 443).Los comandos HTTP Get o HTTP Request ya no puede conectarse en modo seguro a los servidores que no soportan TLS.

Aumento de la seguridad de los certificados

Introducido en 4D v14 R5Las funciones de seguridad de red se han optimizado para que pueda reforzar la protección de sus aplicaciones 4D:

La lista de cifrado débil se ha eliminado,La longitud de la llave de certificado 4D por defecto se ha aumentado a 2048 bits,Ahora puede utilizar sus propias llaves de cifrado para las comunicaciones seguras.

Estas modificaciones se refieren a las siguientes conexiones seguras:

Cliente/servidorServidor SQLCliente HTTP

- 110 -

Page 111: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

4D Write Pro

Originalmente introducido en 4D v14 R54D Write Pro es el sucesor del plug-in 4D Write.4D Write Pro representa un desarrollo importante para 4D, por lo que se está aprovechando el programa de versiones R paraentregarlo progresivamente. La versión 4D Write Pro actual se centra en la compatibilidad de los documentos existentes y de loscorreos electrónicos con formato HTML. Para cada paso posterior, el conjunto de las funcionalidades y de los comandos del lenguajese extenderán.Tenga en cuenta que:

4D Write Pro está utilizando la misma licencia que 4D Write,4D Write Pro ya no es un plug-in está completamente integrado en 4D, por lo que es fácil de gestionar e implementar.

Acerca de la documentación de 4D Write Pro

Las funcionalidades de 4D Write, incluyendo los nuevos comandos del lenguaje, están totalmente documentadas en el nuevomanual Referencia 4D Write Pro.

Sobre esta versión 4D Write Pro

La siguiente tabla muestra el estado actual de las principales funcionalidades 4D Write Pro:Funcionalidad Estado actual ComentarioCrear un área 4D Write Pro en un formulario DisponibleCrear un nuevo documento 4D Write Pro vacío Disponible WP NewImportar un documento 4D Write en un objeto 4D WritePro Disponible WP Import document o WP New

Exportar un objeto 4D Write Pro a un documento ovariable Disponible WP EXPORT DOCUMENT y WP EXPORT

VARIABLEEditar un documento con la ayuda de un menúemergente contextual Disponible

Insertar expresiones (campos de base, resultados delmétodo 4Ds Disponible Uso del comando ST INSERT EXPRESSION

Editar el contenido de un documento por programación Parcialmentedisponible Uso de los comandos 4D "ST" y "OBJECT"

Imprimir un documento 4D Write Pro No disponibleManejo de la paginación No disponibleAcceder a las propiedades del documento porprogramación No disponible

Almacenar un documento 4D Write Pro en un campo dela base No disponible

Interfaz de 4D Write Pro 4D Write Pro command status Importar documentos 4D Write

- 111 -

Page 112: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

Interfaz de 4D Write Pro

Si la propiedad Menú contextual está seleccionada por un área 4D Write Pro (ver Crear un área 4D Write Pro), un menúcontextual completo estará disponible para los usuarios en el modo Aplicación:

Este menú ofrece acceso a todas las funcionalidades 4D Write Pro disponibles actualmente (en los próximos lanzamientos, todas lasfuncionalidades y propiedades también estarán disponibles por programación).Dado que ni la organización del menú contextual ni su contenido son definitivos en este momento, no vamos a describir lasfuncionalidades individuales en esta documentación. Lo invitamos a navegar a través de los diferentes sub-menús para tener unaidea de lo que 4D Write Pro es capaz de hacer.Nota: en la versión actual, los documentos 4D Write Pro se muestra por defecto en modo vista página Web. En este modo, el textose ajusta automáticamente y la barra de desplazamiento horizontal (si está definida) está desactivada. Si desea utilizar una barra dedesplazamiento horizontal y tener texto con un ancho fijo (definido en la propiedad "Tamaño de página"), es necesario cambiar almodo de visualización de página Normal.

- 112 -

Page 113: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

4D Write Pro command status

Varios comandos nuevos se entregan en el tema "4D Write Pro" para manejar áreas 4D Write Pro. Estos comandos estándocumentados en el capítulo Lenguaje 4D Write Pro del manual de referencia de 4D Write Pro.La siguiente tabla muestra el estado de implementación de los comandos 4D Write Pro en la versión actual:

Nombre delcomando Estado actual

WP EXPORTVARIABLE Sólo dos formatos de exportación están disponibles actualmente

WP EXPORTDOCUMENT

Si no pasa el parámetro formato, debe utilizar la extensión del archivo ".htm" o ".html"; sólo un formato deexportación está disponible actualmente

WP Importdocument

Para obtener una lista detallada de las funcionalidades 4D Write que actualmente son soportadas en objetos4D Write Pro, consulte la sección Importar documentos 4D Write.

WP New Para obtener una lista detallada de las funcionalidades 4D Write que actualmente están soportadas en objetos4D Write Pro, consulte la sección Importar documentos 4D Write.

Nota: tenga en cuenta que sólo los comandos de los temas "Objectos (formularios)" y "Texto con estilo" pueden utilizarse con áreas4D Write Pro (ver las secciones Utilizar los comandos del tema Objeto (Formularios) y Utilizar los comandos del tema Textocon estilo).

- 113 -

Page 114: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

Importar documentos 4D Write

Una de las principales funcionalidades del nuevo 4D Write Pro es la capacidad de importar y convertir documentos 4D Write Pro existentes. Esto le permitirá migrar las aplicaciones que se basan en el plug-in 4D Write. Nota de compatibilidad: sólo los documentos 4D Write de la última generación ("4D Write v7") son soportados.

Cómo importar un documento 4D Write

Los objetos 4D Write Pro ofrecen dos maneras de importar documentos 4D Write:

Para los archivos 4D Write Pro almacenados en el disco, se utiliza el comando WP Import document,Para las áreas 4D Write almacenadas en campos BLOB, se utiliza el comando WP New.

Para más información, consulte la descripción de estos comandos.

¿Qué propiedades se conservan de 4D Write?

Para facilitar la migración desde el plug-in 4D Write a 4D Write Pro, queremos soportar tantas funcionalidades 4D Write como seaposible en objetos 4D Write Pro.Este párrafo muestra las propiedades del plug-in 4D Write que se recuperan en un área 4D Write Pro después de una importacióncon los comandos WP Import document o WP New.Tenga en cuenta sin embargo, que hay algunas diferencias, que no se consideran como bugs. Esto se debe, por ejemplo, a la fuentepredeterminada utilizada en 4D Write Pro para viñetas, o pequeñas conversiones en el tipo Subrayado.

Información del documento Plug-in 4D Write 4D Write ProCreación fecha y hora DisponibleModificación fecha y hora DisponibleBloqueado No disponible (utilizar la propiedad objeto sólo lectura)Título DisponibleTema Disponible (sólo texto plano)Autor DisponibleEmpresa DisponibleNotas Disponible

Parámetros de visualización del documento Plug-in 4D Write 4D Write ProVista modo página No importado (utilizar el modo de vista Documento/Página en el menú contextual)Vista reglas No disponibleVista marcos No disponibleVista encabezado No disponibleVista pie No disponibleVista encabezado de primera página No disponibleVista pie de primera página No disponibleVista imágenes No disponibleVista HScrollbar No importado (utilice la propiedad de objeto desplazable hor.)Vista VScrollbar No importado (utilice la propiedad de objeto desplazable vert.)Vista invisible characters No disponibleVista referencias No importado (utilice ST SET OPTIONS)Vista separadores de columna No disponibleVista H Splitter No disponibleVista V Splitter No disponibleVista Wysiwyg No disponibleVista zoom No importado (utilice Document/Zoom en el menú contextual)

Parámetros del documento

- 114 -

Page 115: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

Plug-in 4D Write 4D Write ProUnidad No disponibleLenguaje No disponibleConteo de columnas No disponibleEspacio entre columnas No disponibleViudas y huérfanos No disponiblePestaña por defecto DisponiblePestaña Líder No disponibleColor URL No disponibleColor visitado URL No disponible

Parámetros de paginación de documentos Plug-in 4D Write 4D Write ProAncho de página No disponibleAlto página No disponibleNúmero primera página No disponiblePrimera página encabezado pies diferentes No disponiblePágina encabezado Izquierda y derecha y pie de página diferentes No disponibleEncuadernación No disponiblePáginas opuestas No disponibleMárgenes página Disponible (implementación temporal)Encabezado margen superior No disponibleEncabezado margen inferior No disponiblePie de página margen superior No disponiblePie de página margen inferior No disponiblePrimera página margen superior No disponiblePrimera página margen inferior No disponibleEncabezado primera página margen superior No disponibleEncabezado primera página margen inferior No disponiblePie de página primera página margen superior No disponiblePie de página primera página margen inferior No disponiblePrimera página es correcta No disponible

Parámetros de impresión de documentos Plug-in 4D Write 4D Write ProClase de papel No disponiblePaisaje No disponibleAncho No disponibleAlto No disponibleMárgenes de usuario No disponibleEscala No disponibleResolución X No disponibleResolución Y No disponible

Imágenes Nota: 4D Write Pro aun no soporta posicionamiento absoluto para las imágenes en las páginas. Sólo las imágenes en línea soncompatibles y se importan para esta vista previa técnica.

Plug-in 4D Write 4D Write ProX (izquierda) (para imágenes en página unicamente)Y (arriba) (para imágenes en página unicamente)Ancho DisponibleAlto DisponibleNúmero de página No disponibleDetrás No disponibleNo en primera página No disponibleModo de visualización (escala a ajustar, etc.) DisponibleEs una expresión No disponibleConservar el tamaño No disponible

Propiedades de caracteres

- 115 -

Page 116: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

Plug-in 4D Write 4D Write Pro (span)Itálica DisponibleNegrita DisponibleTachado DisponibleSubrayado DisponibleSombra DisponibleExponente (superscript o subscript) DisponibleMayúsculas o pequeñas mayúsculas DisponibleFamilia de fuente DisponibleTamaño de fuente DisponibleColor texto DisponibleColor fondo de texto DisponibleColor subrayado DisponibleColor tachado DisponibleColor sombra DisponiblePropiedad usuario No disponibleCorrección ortográfica (sintaxis ygramática) No disponible

Apariencia No disponible

Hoja de estilo No importado (los estilos son importados pero las hojas de estilo no estándisponibles)

Propiedades párrafos Plug-in 4D Write 4D Write ProJustificación DisponibleInterlinea DisponibleViñetas DisponibleMargen izquierdo DisponibleMargen derecho DisponibleIndentar texto DisponibleEstilo borde linea DisponibleColor borde linea DisponibleColor fondo borde DisponibleBorde izquierdo DisponibleBorde derecho DisponibleBorde superior y borde interior arriba DisponibleBorde inferior y borde interior inferior DisponibleEspacio de borde DisponibleHoja de estilo DisponibleTabulaciones Disponible

Hyperlinks Plug-in 4D Write 4D Write ProEnlace URL DisponibleEnlace método 4D No disponibleEnlace documento abierto No disponible

Expresiones 4D Plug-in 4D Write 4D Write ProExpresión 4D DisponibleFecha y hora DisponibleExpresión HTML No disponibleExpresión RTF No disponible

Datos de texto Plug-in 4D Write 4D Write ProDatos de texto principales DisponibleDatos de texto encabezado No disponibleDatos de texto Pie No disponible

- 116 -

Page 117: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

4D Internet Commands

4D Internet Commands, versión 64 bits para OS X SMTP_QuickSend SMTP_Attachment

- 117 -

Page 118: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

4D Internet Commands, versión 64 bits para OS X

Originalmente introducido en 4D v14 R44D ahora ofrece 4D Internet Commands 64 bits para OS X. Esta versión le permitirá utilizar el plug-in 4D Internet Commands en 4DServer 64 bits para OS X. Para más información, consulte la sección 4D Server, versión 64 bits para OS X (preliminar).

La instalación y uso del plug-in 4D Internet Commands 64 bits para OS X es similar a las versiones existentes, excepto por laslimitaciones que se enumeran a continuación.

Requerimientos

4D IC 64 bits debe utilizarse con 4D Server 64 bits para OS X versión 14 R3 o superior.Al igual que 4D Server, 4D IC 64 bits requiere OS X versión 10.9 (Mavericks) o superior.

Soporte de nombres de archivos más largos

En 4D IC de 64 bits para OS X, la longitud de los nombres de archivo ya no está limitada a 62 caracteres como en las versiones OSX existentes, sino a 1024 caracteres, que es el límite estándar actual para el sistema operativo.

La eliminación de esta limitación se refiere a todos los comandos que manejan nombres de archivo, incluyendo FTP, IMAP, MSG,POP, SMTP e IT commands.

Funcionalidades de interfaz no soportadas

Con respecto a las características de OS X con respecto a la interfaz de usuario, las siguientes funciones no son soportadas en 4DInternet Commands de 64 bits para OS X.

Barra de progreso 4D IC de 64 bits para OS X no muestra ninguna barra de progreso durante la ejecución de operaciones que consumen muchotiempo. El comando FTP_Progress FTP_Progress está en desuso en OS X de 64 bits.

Cuando se llama en este entorno, el comando devuelve el error -2201 (función no implementada).

Diálogo File selector

Las cajas de diálogo File selector no pueden ser mostradas por el plug-in 4D IC de 64 bits para OS X. Con esta versión, losparámetros localPath o hostPath son obligatorios y deben contener rutas de archivos válidas, de lo contrario se devuelve un error -2201 (funcionalidad no implementada). Esta sintaxis concierne a todos los comandos que manejan nombres de archivo, incluyendoFTP, IMAP, MSG, POP, SMTP e IT commands.Si desea que el usuario seleccione los archivos de su ordenador, le recomendamos que llame a los comandos integrados de 4D,tales como Select document.

- 118 -

Page 119: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

SMTP_QuickSend

SMTP_QuickSend ( nomServidor; msgDe ; msgA ; asunto ; mensaje {; paramSesion}{; puerto}{; nomUsuario ; contrasena} ) ->Resultado

Parámetro Tipo DescripciónnomServidor Cadena -> Nombre o dirección IP del servidormsgDe Texto -> Correo electrónico o lista de correosmsgA Texto -> Correo electrónico o lista de correosasunto Texto -> Asunto del mensaje (UTF-8 por defecto)mensaje Texto -> Mensaje (UTF-8 por defecto)

paramSesion Enterolargo ->

0 o si se omite = No utilizar SSL sino switchover permitido, 1 = Utilizar SSL, 2 = Nunca utilizar SSL(switchover no permitido), 4 = Enviar texto HTML sin SSL, 5 = Enviar texto HTML con SSL, 8 =Enviar Mime HTML sin SSL/TLS, 9 = Enviar Mime HTML con SSL/TLS

puerto Enterolargo -> Número de puerto a utilizar

nomUsuario Texto -> Nombre de usuario para la autenticacióncontrasena Texto -> Contraseña para la autenticaciónFunctionresult Entero <- Código del error

Descripción

Originalmente introducido en 4D v14 R4El comando SMTP_QuickSend ahora le permite enviar mensajes con el formato HTML MIME, con o sin el protocolo SSL/TLS. MimeHTML (.mht o extensión de archivo .mhtml) es un formato de archivo de la página Web que puede fusionar el código HTML, así comotambién los recursos externos, tales como imágenes en un único documento. Es soportado por varios navegadores, así comotambién por MS Word, por ejemplo. Dado que este formato es soportado por las áreas 4D Write Pro, usted podrá guardar y enviaráreas 4D Write Pro por correo incluyendo todos sus recursos.Pase 8 en paramSesion para formatear el mensaje en Mime HTML y enviarlo en modo estándar.Pase 9 en paramSesion para formatear el mensaje en Mime HTML y enviarlo en modo SSL/TLS.Estos valores corresponden a las combinaciones habituales, sin embargo el parámetro paramSesion es una realidad un campo debits y permite cualquier combinación personalizada si utiliza operadores en los bits:

Númerode bit Formato utilizado si el bit es 1

0 Utilizar SSL o el comportamiento predeterminado, conexión en claro, y actualización a SSL si es posible.

1 Nunca actualizar, permanecer en modo no cifrado, incluso si la actualización es posible. Bit se ignora si SSL (bit 0)se ha seleccionado.

2 El cuerpo del mensaje es HTML, definir el encabezado correspondiente.

3 Mensaje MHTML, el bit 2 (HTML) se ignora. El usuario es responsable de definir todos los encabezados, excepto"A", "De", "Fecha" y "Asunto"

Nota: este comando no soporta bases de datos convertidas corriendo en modo "Non-Unicode".

Ejemplo

Usted guardó un documento .mht de su disco y desea enviarlo por correo electrónico. Para ello, puede escribir:

$Message:=Document to text("c:\\documents\\invitation.mht") $Host:="smtp.gmail.com" $ToAddress:="[email protected]" $FromAddress:="[email protected]" $Subject:="Let's party" $Param:=9 //MHTML con SSL $Port:=465 //SSL puerto de gmail $User:="[email protected]" $Password:="xyz&@!&@" $Error:=SMTP_QuickSend($Host;$FromAddress;$ToAddress;$Subject;$Message;$Param;$Port;$User;$Password)

- 119 -

Page 120: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

SMTP_Attachment

SMTP_Attachment ( smtp_ID ; nomArchivo ; tipoCod ; opcionEliminar {; IDAsociado {; tipoContenido}} ) -> Resultado de la función

Parámetro Tipo Descripción

smtp_ID Enterolargo -> Referencia del mensaje

nomArchivo Texto -> Nombre del archivo a asociar

tipoCod Entero ->0 = No codificación (envía DataFork únicamente) ±1 = BinHex ±2 = Base64; (envía DataForkúnicamente) ±3 = AppleSingle ±4 = AppleDouble ±5 = AppleSingle AND Base64 ±6 = AppleDoubleAND Base64 ±7 = UUEncode

opcionEliminar Entero -> 0 = Añadir a lista existente, 1 = Remplazar todos los adjuntos con Filename, 2 = Remover sólo esteadjunto

IDAsociado Texto -> ID del adjunto (mensajes HTML únicamente)tipoContenido Texto -> Valor Content-type a definirResultado dela función Entero <- Código de error

Descripción

Originalmente introducido en 4D v14 R4Tema: IC Send MailEl comando SMTP_Attachment ahora acepta un nuevo parámetro tipoContenido, permitiéndole definir el tipo de contenido delarchivo adjunto.Por defecto, si el parámetro tipoContenido se omite o contiene una cadena vacía, 4DIC establece automáticamente el tipo delcontenido del archivo adjunto en función de su extensión. Las siguientes reglas se aplican:

Extensión Tipo de contenidojpg, jpeg image/jpegpng image/pnggif image/gifpdf application/pdfdoc application/mswordxls application/vnd.ms-excelppt application/vnd.ms-powerpointzip application/zipgz application/gzipjson application/jsonjs application/javascriptps application/postscriptxml application/xmlhtm, html text/htmlmp3 audio/mpegother application/octet-stream

En tipoContenido, puede pasar una cadena que define el tipo del contenido (tipo MIME) para el archivo, por ejemplo "video/mpeg".Este valor content-type se definirá para el adjunto, sin importar su extensión.Nota: pase una cadena vacía ("") en IDAsociado si no desee utilizar este parámetro.

Ejemplo

Queremos declarar sus archivos de configuración como archivos XML:

$path:=Get 4D folder(Database folder)+"Settings.mySettings" $err:=SMTP_Attachment($smtp_id;$path;2;0;"myID123";"application/xml")

- 120 -

Page 121: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

4D View

PV GET BORDER ROW RANGES PV GET BORDER COLUMN RANGES

- 121 -

Page 122: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

PV GET BORDER ROW RANGES

PV GET BORDER ROW RANGES ( area ; izq ; sup ; der ; inf ; tiposBorde ; coloresBorde ) Parámetro Tipo Descripciónarea Entero largo Área 4D Viewizq Array entero largo Array de los números de las columnas para las celdas a la izquierdasup Array entero largo Array de los números de fila para las celdas superioresder Array entero largo Array de los números de las columnas para las celdas a la derechainf Array entero largo Array de los números de fila para las celdas inferiorestiposBorde Array entero largo Array de tipos de bordecoloresBorde Array entero largo Array de colores de borde

Descripción

Originalmente introducido en 4D v14 R4Tema: PV BordersEl nuevo comando PV GET BORDER ROW RANGES devuelve una lista de rangos que describen las celdas que comparten elmismo estilo de borde superior (un estilo de borde consiste de un tipo y de un color). Cada rango se devuelve a través de arrays sincronizados izq, sup, der e inf, donde cada elemento representa, respectivamente losnúmeros de celda del rango, izquierda, arriba, derecha y abajo.Los estilos de bordes correspondientes se devuelven en los parámetros array tiposBorde y coloresBorde:

los valores tiposBorde se pueden comparar con las constantes del tema PV Estilo de borde:Constante Tipo Valorpv border style 1 Entero largo 1pv border style 111 Entero largo 7pv border style 112 Entero largo 9pv border style 2 Entero largo 2pv border style 211 Entero largo 8pv border style 212 Entero largo 10pv border style 222 Entero largo 11pv border style 232 Entero largo 12pv border style 3 Entero largo 3pv border style 4 Entero largo 4pv border style 5 Entero largo 5pv border style 6 Entero largo 6pv border style half Entero largo 14pv border style none Entero largo 0pv border style quarter Entero largo 13

los valores coloresBorde son de tipo BGR entero largo. Para obtener más información, consulte el comando PV Color to indexPV Color to index

Este comando debe ser usado en conjunto con el nuevo comando PV GET BORDER COLUMN RANGES para obtener unadefinición completa de los bordes en su área, que es útil por ejemplo cuando se quiere exportar un área 4D View en formato MSExcel.Nota: la lista de rangos devuelta por el comando depende de la forma en que los rangos se definieron. Por ejemplo, si dibujó unalínea horizontal, mientras seleccionaba el rango (4A;4E), el comando sólo devuelve un valor correspondiente al rango (4A;4E). Sinembargo, si traza una línea horizontal en la línea 4 y luego hace un bucle sobre las columnas A a E, el comando devuelve cincovalores correspondientes a cada iteración del bucle. El resultado es visualmente idéntico, pero la información almacenada en el áreaes diferente.

Ejemplo

Su área contiene los siguientes bordes:

- 122 -

Page 123: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

Si ejecuta este código:

PV GET BORDER ROWRANGES(myArea;LeftArray;TopArray;RightArray;BottomArray;BorderTypeArray;BorderColorArray)

Se detectarán cuatro rangos, por lo tanto sus arrays contienen los siguientes valores:LeftArray TopArray RightArray BottomArray BorderTypeArray BorderColorArray2 3 3 3 3 155975682 5 3 5 3 155975683 8 4 8 9 391682 9 4 9 2 255

- 123 -

Page 124: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

PV GET BORDER COLUMN RANGES

PV GET BORDER COLUMN RANGES ( area ; izq ; sup ; der ; inf ; tiposBorde ; coloresBorde ) Parámetro Tipo Descripciónarea Entero largo Área 4D Viewizq Array entero largo Array de números de columnas para celdas izquierdassup Array entero largo Array de los números de fila para las celdas superioresder Array entero largo Array de los números de las columnas para las celdas a la derechainf Array entero largo Array de los números de fila para las celdas inferiorestiposBorde Array entero largo Array de tipos de bordecoloresBorde Array entero largo Array de colores de borde

Descripción

Originalmente introducido en 4D v14 R4Tema: PV BordersEl nuevo comando PV GET BORDER COLUMN RANGES devuelve una lista de rangos que describen las celdas que comparten elmismo estilo de borde izquierdo (un estilo de borde consiste de un tipo y de un color).Cada rango se devuelve a través de arrays sincronizados izq, sup, der e inf, donde cada elemento representa, respectivamente losnúmeros de celda del rango, izquierda, arriba, derecha y abajo.Los estilos de bordes correspondientes se devuelven en los parámetros array tiposBorde y coloresBorde:

los valores tiposBorde se pueden comparar con las constantes del tema PV Estilo de borde:Constante Tipo Valorpv border style 1 Entero largo 1pv border style 111 Entero largo 7pv border style 112 Entero largo 9pv border style 2 Entero largo 2pv border style 211 Entero largo 8pv border style 212 Entero largo 10pv border style 222 Entero largo 11pv border style 232 Entero largo 12pv border style 3 Entero largo 3pv border style 4 Entero largo 4pv border style 5 Entero largo 5pv border style 6 Entero largo 6pv border style half Entero largo 14pv border style none Entero largo 0pv border style quarter Entero largo 13

los valores coloresBorde son de tipo BGR entero largo. Para obtener más información, consulte el comando PV Color to indexPV Color to index

Este comando debe ser usado en conjunto con el nuevo comando PV GET BORDER ROW RANGES para obtener una definicióncompleta de los bordes en su área, que es útil por ejemplo cuando se quiere exportar un área 4D View en formato MS Excel.Nota: la lista de rangos devuelta por el comando depende de la forma en que los rangos se definieron. Por ejemplo, si dibujó unalínea vertical, mientras seleccionaba el rango (1B;5B), el comando sólo devuelve un valor correspondiente al rango (1B; 5B). Sinembargo, si traza una línea vertical en la columna B y luego hace un bucle sobre las líneas 1 a 5, el comando devuelve cinco valorescorrespondientes a cada iteración del bucle. El resultado es visualmente idéntico, pero la información almacenada en el área esdiferente.

Ejemplo

Su área contiene los siguientes bordes:

- 124 -

Page 125: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

Si ejecuta este código:

PV GET BORDER COLUMNRANGES(myArea;LeftArray;TopArray;RightArray;BottomArray;BorderTypeArray;BorderColorArray)

Dos rangos se detectarán, por lo tantos sus arrays contendrán los siguientes valores:LeftArray TopArray RightArray BottomArray BorderTypeArray BorderColorArray2 3 2 4 3 155975684 3 4 4 3 15597568

- 125 -

Page 126: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

4D SVG

Filtros con Direct2D activado en Windows

- 126 -

Page 127: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

Filtros con Direct2D activado en Windows

Originalmente introducido en 4D v14 R5Los comandos SVG_Filter_Blend, SVG_Filter_Blur y SVG_Filter_Offset ahora son soportados en Windows con Direct2Dhabilitado en contexto de software gráfico (contexto por defecto en 4D v14, ver la opción Direct2D Software en el comando SETDATABASE PARAMETER.En las versiones anteriores de 4D, estos comandos requieren que Direct2D esté desactivado en Windows.

- 127 -

Page 128: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

4D Pack

4D Pack, versión 64 bits para OS X Comandos obsoletos renombrados

- 128 -

Page 129: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

4D Pack, versión 64 bits para OS X

Originalmente introducido en 4D v14 R54D ahora ofrece una versión de 64 bits de 4D Pack para OS X. Esta versión le permitirá utilizar el plug-in 4D Pack con la versión de64 bits de 4D Server para OS X (ver 4D Server, versión 64 bits para OS X (preliminar)).

La instalación y uso de la versión de 64 bits del plug-in 4D Pack para OS X es similar a las versiones existentes, a excepción deciertas limitaciones que se enumeran a continuación.

Comando no soportado

Todos los comandos 4D Pack que estaban disponibles en Mac OS son soportados con la versión de 64 bits para OS X, a excepciónde:

_o_AP Save BMP 8 bits_o_AP Save BMP 8 bitsEste comando se basa en una tecnología obsoleta y ya era obsoleta en lanzamientos anteriores 4D Pack. No se soporta en laversión de 64 bits de 4D Pack para OS X.

- 129 -

Page 130: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

Comandos obsoletos renombrados

Originalmente introducido en 4D v14 R5Varios comandos 4D Pack han quedado en desuso desde hace mucho tiempo y le recomendamos que no los utilice en nuevosproyectos. Para una identificación más clara, estos comandos tiene el prefijo "_o_":

Tema Nombre anterior Nuevo nombre Estado4D_Pack: ANSIstreams AP FCLOSE _o_AP FCLOSE Obsoleto

AP fopen _o_AP fopen ObsoletoAP FPRINT _o_AP FPRINT ObsoletoAP fread _o_AP fread Obsoleto

4D Pack: Picturefiles AP Save BMP 8 bits _o_AP Save BMP 8

bits Obsoleto, no soportado en OS X 64-bit

4D Pack: Utilities AP Add table andfields

_o_AP Add table andfields Obsoleto, no documentado

AP Create relation _o_AP Create relation Obsoleto, no documentadoAP Get file MD5digest

_o_AP Get file MD5digest Obsoleto, remplazado por Generate digest

AP ShellExecute _o_AP ShellExecute Obsoleto, remplazado por LAUNCH EXTERNALPROCESS

- 130 -

Page 131: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

Company Directory (LDAP)

4D v15 incluye nuevas funcionalidades que permiten a su aplicación 4D conectarse a un directorio de empresa existente utilizando elprotocolo LDAP. Los nuevos comandos del tema "LDAP" ofrecen herramientas para conectarse a un servidor de directorioempresa, tal como MS Active Directory y efectuar búsquedas.Estos nuevos comandos le permiten:

utilizar el inicio de sesión y la contraseña de Windows para permitir el acceso a su aplicación 4D (si utiliza el directorio MSActive) de manera que el usuario final sólo tiene que recordar una única contraseña,buscar el directorio de la empresa para recuperar la información del usuario, como nombre completo, dirección de correoelectrónico, número de teléfono, edificio, grupos a los que pertenece, etc.

Nota: LDAP o Lightweight Directory Access Protocol es un estándar abierto para el acceso y el mantenimiento de los servicios deinformación distribuidos. Para más información, consulte la página Wikipedia en LDAP o la página principal OpenLDAP Software.En 4D, una conexión LDAP se abre utilizando LDAP LOGIN. A continuación, se une al proceso 4D y debe ser cerrado utilizandoLDAP LOGOUT, o cuando el proceso termina su ejecución.

Glosario

Aquí está una lista de los principales acrónimos utilizados en el entorno LDAP:Acrónimo DefiniciónLDAP Lightweight Directory Access Protocol

AD Active Directory. AD es una base de servicios de directorio implementada por Microsoft, y LDAP es uno de losprotocolos de intercambio.

CN Common Name, por ejemplo "John Doe"DN Distinguished Name, por ejemplo "cn=John Doe,ou=users,dc=example,dc=com"SAM-Account-Name nombre de inicio de sesión para la conexión AD, por ejemplo "jdoe"

OU Organizational unit, grupos del árbol servidorDC Domain components, raíz y primeras ramas del árbol servidoruid User identifier

LDAP LOGIN LDAP LOGOUT LDAP Search LDAP SEARCH ALL

- 131 -

Page 132: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

LDAP LOGIN

LDAP LOGIN ( url ; login ; contraseña {; digest} ) Parámetro Tipo Descripciónurl Cadena URL del servidor LDAP al cual conectarselogin Cadena Cuenta del usuariocontraseña Cadena Contraseña del usuariodigest Entero largo 0 = enviar contraseña en digest MD5 (por defecto), 1 = enviar contraseña sin cifrado

Descripción

El comando LDAP LOGIN abre una conexión de sólo lectura en el servidor LDAP especificado por el parámetro url con losidentificadores login y contraseña suministrados. Si es aceptado por el servidor, esta conexión se utiliza para todas las búsquedasLDAP efectuadas posteriormente en el proceso actual hasta que el comando LDAP LOGOUT se ejecute (o hasta que el proceso secierre).En url, pase el URL completo del servidor LDAP al cual conectarse, incluyendo el esquema y el puerto (389 por defecto). Esteparámetro debe ser compatible con la rfc2255.

Puede abrir conexiones seguras a través de TLS utilizando una mediante el uso de una url que empieza comience por "ldaps" y queutilice un número de puerto específico (por ejemplo "ldaps://svr.ldap.acme.com:1389"). El servidor LDAP debe tener un certificadoSSL (al menos para Microsoft Active Directory). Es muy recomendable utilizar una conexión TLS cuando se envía la contraseña entexto plano (ver más abajo).Nota: si pasa una cadena vacía en el parámetro url, el comando intentará conectarse al servidor LDAP predeterminado disponibleen el dominio; (esta funcionalidad está diseñada para propósitos de prueba solamente, por razones de rendimiento no debería serutilizada en producción).En login, pase la cuenta de usuario en el servidor LDAP, y en contraseña, pase la contraseña de usuario. Por defecto, el login puedeser una de las siguientes cadenas de inicio de sesión, dependiendo de la configuración del servidor LDAP:

un Distinguished Name (DN), por ejemplo "CN=John Smith,OU=users,DC=example,DC=com"un nombre de usuario (CN), por ejemplo "CN=John Smith"una dirección de correo electrónico, por ejemplo "[email protected]"un SAM-Account-Name, por ejemplo "jsmith".

Tenga en cuenta que los valores aceptados para el login están relacionadas con el modo de transmisión de la contraseña definidopor el parámetro digest. Por ejemplo, en una configuración por defecto de MS Active Directory:

Cuando el modo de transmisión es LDAP password MD5, el único valor aceptado para un inicio de sesión es el SAM-Account-Name.Cuando el modo de transmisión es LDAP password plain text (texto plano), el parámetro login puede ser DN, CN o unadirección de correo electrónico. Un SAM-Account-Name también se acepta, pero sólo cuando es precedido por el nombre dedominio (por ejemplo, (for example "dc-acme.com/jsmith").

El parámetro digest le permite modificar la forma en que la contraseña se transmite por la red. Puede utilizar una de las siguientesconstantes, ubicadas en el tema "LDAP":

Constante (valor) Tipo DescripciónLDAP contraseña en MD5 (0) Entero largo (Por defecto) Envío de contraseña encriptada en MD5contraseña en texto plano (1) Entero largo Envío de contraseña sin cifrado (conexión TLS recomendada)

Por defecto, la contraseña se transmite en digest MD5. Pase LDAP password plain text si es necesario, por ejemplo, si deseautilizar diferentes valores de tipo de inicio de sesión con el servidor LDAP. En un entorno de producción, se recomienda utilizar unaconexión TLS para la url.Nota: la autenticación con una contraseña vacía permite introducir el modo de conexión anónima (si está autorizado por el servidorLDAP). Sin embargo, en este modo, se pueden generar errores si se intenta realizar cualquier operación que no esté permitida eneste modo específico.Si los parámetros de inicio de sesión son válidos, una conexión con el servidor LDAP se abre en el proceso 4D. Luego puedebuscar y recuperar información utilizando los comandos LDAP.No olvide llamar al comando LDAP LOGOUT cuando la conexión al servidor LDAP ya no sea necesaria.

Ejemplo 1

Usted quiere conectarse a un servidor LDAP y efectuar una búsqueda:

ARRAY TEXT($_tabAttributes;0) APPEND TO ARRAY($_tabAttributes;"cn")

- 132 -

Page 133: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

APPEND TO ARRAY($_tabAttributes;"phoneNumber") LDAP LOGIN("ldap://srv.dc.acme.com:389";"John Smith";"qrnSurBret2elburg") $vfound:=LDAP Search("OU=UO_Users,DC=ACME,DC=com";cn=John Doe";LDAP all levels;$_tabAttributes) LDAP LOGOUT //no olvide desconectarse

Ejemplo 2

Este ejemplo intenta conectarse a una aplicación:

ON ERR CALL("ErrHdlr") //gestión de errores errOccured:=False errMsg:="" If(ppBindMode=1) //si contraseña es modo por defecto LDAP LOGIN(vUrlLdap;vUserCN;vPwd;LDAP password MD5) Else LDAP LOGIN(vUrlLdap;vUserCN;vPwd;LDAP password plain text) End if Case of :(Not(errOccured)) ALERT("Ahora está conectado a su servidor LDAP. ") :(errOccured) ALERT("Errores en sus parámetros") End case LDAP LOGOUT ON ERR CALL("")

- 133 -

Page 134: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

LDAP LOGOUT

LDAP LOGOUT Este comando no requiere parámetros

Descripción

El comando LDAP LOGOUT cierra la conexión con un servidor LDAP en el proceso actual (si aplica). Si no hay conexión, sedevuelve el error 1003 indicando que no está conectado.

- 134 -

Page 135: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

LDAP Search

LDAP Search ( dnRootEntry ; filtro {; alcance {; atributos {; atributosEnArray}}} ) -> Resultado Parámetro Tipo DescripcióndnRootEntry Cadena Nombre completo de la entrada de la raíz para iniciar la búsquedafiltro Cadena Filtro de búsqueda LDAPalcance Cadena Alcance de la búsqueda: "base" (por defecto), "one", o "sub"atributos Array cadena Atributos a recuperaratributosEnArray Array

booleanoTrue = fuerza el retorno de los atributos en un array; false = fuerza el retorno de los atributos en unavariable simple

Resultado Objeto Atributos llave/valor

Descripción

El comando LDAP Search busca la primera ocurrencia que coincida con los criterios definidos en el servidor LDAP objetivo. Estecomando debe ser ejecutado dentro de una conexión a un servidor LDAP abierta con LDAP LOGIN; de lo contrario se devuelve unerror 1003.En dnRootEntry, pase el Distinguished Name del elemento raíz del servidor LDAP; la búsqueda se iniciará a partir de esteelemento.En filtro, pase el filtro de búsqueda LDAP a aplicar. La cadena filtro debe ser compatible con rfc2225. Puede pasar una cadenavacía "" para no filtrar la búsqueda; el "*" se soporta para buscar subcadenas.En alcance, pase una de las siguientes constantes del tema "LDAP":

Constante Tipo Valor ComentarioLDAP root only Texto "base" Buscar sólo en el elemento raíz definido por dnRootEntry (por defecto si se omite)LDAP root andnext Texto "one" Buscar en el elemento la raíz definido por dnRootEntry y en las entradas posteriores

directamente en un nivelLDAP all levels Texto "sub" Buscar en el elemento raíz definido por dnRootEntry y en todas las entradas posteriores

En atributos, pase un array texto que contiene la lista de todos los atributos LDAP a recuperar a partir de las entradas encontradas.Por defecto, si se omite este parámetro, todos los atributos se recuperan.Nota: tenga en cuenta que los nombres de atributos LDAP distinguen entre mayúsculas y minúsculas. Para más información sobrelos atributos LDAP, puede consultar esta página que lista todos los atributos disponibles para MS Active directory.Por defecto, el comando devuelve atributos como un array si se encuentran varios resultados, o como una variable si se encuentra unsolo resultado. Los parámetros opcionales atributosEnArray permiten "forzar" el formato de los atributos devueltos en un array ocomo una variable para cada atributo definido:

Cuando pase true en un elemento, el elemento correspondiente del parámetro atributos será devuelto en un array. Si seencuentra un solo valor, el comando devuelve un array con un solo elemento.Cuando pase false en un elemento, el elemento correspondiente del parámetro atributos será devuelto en una variable simple.Si se encuentran varias entradas, el comando devuelve sólo el primer elemento.

Ejemplo 1

Usted desea conseguir el número de teléfono del usuario "smith" en el directorio de la empresa:

ARRAY TEXT($_tabAttributes;0) APPEND TO ARRAY($_tabAttributes;"cn") APPEND TO ARRAY($_tabAttributes;"phoneNumber") LDAP LOGIN($url;$dn;$pwd) $filter:="cn=*smith*" $vfound:=LDAP Search($dnSearchRootEntry;$filter;LDAP all levels;$_tabAttributes) LDAP LOGOUT

Ejemplo 2

Queremos obtener una array de todas las entradas que se encuentran en el atributo "memberOf":

C_OBJECT($entry) ARRAY TEXT($_tabAttributes;0) ARRAY BOOLEAN($_tabAttributes_asArray;0) APPEND TO ARRAY($_tabAttributes;"cn")

- 135 -

Page 136: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

APPEND TO ARRAY($_tabAttributes_asArray;False) APPEND TO ARRAY($_tabAttributes;"memberOf") APPEND TO ARRAY($_tabAttributes_asArray;True) LDAP LOGIN($url;$login;$pwd;LDAP password plain text) $entry:=LDAP Search($dnSearchRootEntry;"cn=adrien*";LDAP alllevels;$_tabAttributes;$_tabAttributes_asArray) LDAP LOGOUT ARRAY TEXT($_arrMemberOf;0) OB GET ARRAY($entry;"memberOf";$_arrMemberOf) // en $_arrMemberOf tenemos un array que contiene todos los grupos de la entrada

- 136 -

Page 137: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

LDAP SEARCH ALL

LDAP SEARCH ALL ( dnRootEntry ; arrResult ; filtro {; alcance {; atributos {; atributosEnArray}}} ) Parámetro Tipo DescripcióndnRootEntry Cadena Nombre completo del elemento raíz para iniciar la búsquedaarrResult Array objeto Resultado de la búsquedafiltro Cadena Filtro de búsqueda LDAPalcance Cadena Alcance de la búsqueda: "base" (por defecto), "one", o "sub"atributos Array cadena Atributo(s) a recuperaratributosEnArray Array

booleanoTrue = forzar el retorno de los atributos en array; false = forzar el retorno de los atributos en variablessimples

Descripción

El comando LDAP SEARCH ALL busca todas las ocurrencias que coinciden con los criterios definidos en el servidor LDAPobjetivo. Este comando debe ser ejecutado dentro de una conexión a un servidor LDAP abierta con LDAP LOGIN; de lo contrario sedevuelve un error 1003.Tenga en cuenta que los servidores LDAP generalmente imponen un número máximo de entradas que se pueden recibir de unabúsqueda. Por ejemplo, el directorio de Microsoft Active limita este número a 1.000 entradas por defecto.En dnRootEntry, pase el Distinguished Name del elemento raíz del servidor LDAP; la búsqueda se iniciará a partir de esteelemento.En tabResult, pase un array objeto que se llenará con todas las entradas coincidentes; en este array, cada elemento es un objeto quecontiene los pares atributo/valor devueltos por una entrada coincidente. Puede utilizar el parámetro atributos para definir losparámetros a devolver. En filtro, pase el filtro de búsqueda LDAP a aplicar. La cadena filtro debe ser compatible con rfc2225. Puede pasar una cadenavacía "" para no filtrar la búsqueda; el "*" se soporta para buscar subcadenas.En alcance, pase una de las siguientes constantes del tema "LDAP":

Constante Tipo Valor ComentarioLDAP root only Texto "base" Buscar sólo en el elemento raíz definido por dnRootEntry (por defecto si se omite)LDAP root andnext Texto "one" Buscar en el elemento la raíz definido por dnRootEntry y en las entradas posteriores

directamente en un nivelLDAP all levels Texto "sub" Buscar en el elemento raíz definido por dnRootEntry y en todas las entradas posteriores

En atributos, pase un array texto que contiene la lista de todos los atributos LDAP a recuperar a partir de las entradas encontradas.Por defecto, si se omite este parámetro, todos los atributos se recuperan.Nota: tenga en cuenta que los nombres de atributos LDAP distinguen entre mayúsculas y minúsculas. Para más información sobrelos atributos LDAP, puede consultar esta página que lista todos los atributos disponibles para MS Active directory.Por defecto, el comando devuelve atributos como un array si se encuentran varios resultados, o como una variable si se encuentra unsolo resultado. Los parámetros opcionales atributosEnArray permiten "forzar" el formato de los atributos devueltos en un array ocomo una variable para cada atributo definido:

Cuando pase true en un elemento, el elemento correspondiente del parámetro atributos será devuelto en un array. Si seencuentra un solo valor, el comando devuelve un array con un solo elemento.Cuando pase false en un elemento, el elemento correspondiente del parámetro atributos será devuelto en una variable simple.Si se encuentran varias entradas, el comando devuelve sólo el primer elemento.

Ejemplo 1

Queremos obtener el número de teléfono de todos los usuarios con nombre "smith" en el directorio de la empresa:

ARRAY TEXT($_tabAttributes;0) ARRAY BOOLEAN($_tabAttributes_asArray;0) APPEND TO ARRAY($_tabAttributes;"cn") APPEND TO ARRAY($_tabAttributes_asArray;False) APPEND TO ARRAY($_tabAttributes;"telephoneNumber") APPEND TO ARRAY($_tabAttributes_asArray;False) ARRAY OBJECT($_entry;0) LDAP LOGIN($url;$myLogin;$pwd) $filter:="cn=*smith*" LDAP SEARCH ALL($dnSearchRootEntry;$_entry;$filter;LDAP all levels;$_tabAttributes) LDAP LOGOUT

- 137 -

Page 138: 4D Doc Center : 4D v15 - Actualización (standard edition)download.4d.com/Documents/Products_Documentation...Modo Diseño Interfaz línea de comando extendida Tipo de campo Objeto

//$_entry contendrá por ejemplo // $_entry{1} = {"cn":"John Smith","telephoneNumber":"01 40 87 00 00"} // $_entry{2} = {"cn":"Adele Smith","telephoneNumber":"01 40 87 00 01"} // $_entry{3} = {"cn":"Adrian Smith","telephoneNumber":"01 23 45 67 89"} // ...

Ejemplo 2

Estos ejemplos ilustran el uso del parámetro atributosEnArray:

ARRAY OBJECT($_entry;0) ARRAY TEXT($_tabAttributes;0) ARRAY BOOLEAN($_tabAttributes_asArray;0) APPEND TO ARRAY($_tabAttributes;"cn") APPEND TO ARRAY($_tabAttributes_asArray;False) APPEND TO ARRAY($_tabAttributes;"memberOf") APPEND TO ARRAY($_tabAttributes_asArray;True) LDAP LOGIN($url;$login;$pwd;LDAP password plain text) LDAP SEARCH ALL($dnSearchRootEntry;$_entry;$filter;LDAP alllevels;$_tabAttributes;$_tabAttributes_asArray) LDAP LOGOUT ARRAY TEXT($_arrMemberOf;0) OB GET ARRAY($_entry{1};"memberOf";$_arrMemberOf) // en $_arrMemberOf tenemos un array que contiene todos los grupos de la entrada

ARRAY TEXT($_tabAttributes;0) ARRAY BOOLEAN($_tabAttributes_asArray;0) APPEND TO ARRAY($_tabAttributes;"cn") APPEND TO ARRAY($_tabAttributes_asArray;False) APPEND TO ARRAY($_tabAttributes;"memberOf") APPEND TO ARRAY($_tabAttributes_asArray;False) LDAP LOGIN($url;$login;$pwd;LDAP password plain text) LDAP SEARCH ALL($dnSearchRootEntry;$_entry;$filter;LDAP alllevels;$_tabAttributes;$_tabAttributes_asArray) LDAP LOGOUT $memberOf:=OB Get($_entry{1};"memberOf") // en $memberOf tenemos una variable que contiene el primer grupo de la entrada

- 138 -


Recommended