A medida que se lanza cada nueva versión, tenemos en cuenta los comentarios que recibimos de nuestros clientes sobre el uso general de 4D Write Pro y sus comandos. Aunque siguen siendo compatibles al 100%, ¡algunos comandos y funciones del lenguaje evolucionan!
Algunos comandos, cuya sintaxis ha sido mejorada en 4D 20 R8, permiten ahora el uso de parámetros modernos como objetos o colecciones. Otros son ahora funciones, lo que facilita su uso. Por último, se han creado varias funciones nuevas. ¡Todo esto hará que su código sea más simple, más genérico y más fácil de mantener!
WP GET/SET ATRIBUTOS: ¡Todos los atributos en un solo objeto!
Uno de los comandos más populares es WP SET ATTRIBUTES, porque se puede utilizar para todo tipo de objetivos, desde un solo carácter hasta todo el documento. Ahora este comando puede recibir un objeto como parámetro, en lugar de pares atributo-valor.
Ejemplo de código
$attributes:={color: "red"; fontBold: 0; fontItalic: 1; fontSize: "16pt"}
WP SET ATTRIBUTES($range1; $attributes)
WP SET ATTRIBUTES($range2; $attributes)
WP SET ATTRIBUTES($range3; $attributes)
Del mismo modo, es posible recibir en un objeto todos o parte de los atributos de cualquier rango o elemento. Esto es muy útil si desea aplicar los mismos atributos a otro objetivo… Si pasas un solo parámetro, el objeto devuelto contendrá todos los atributos, ¡pero puedes limitarlo utilizando una colección!
$attributes:=WP Get attributes($range; ["color"; "fontItalic"])
Finalmente el comando WP RESET ATTRIBUTES ahora acepta una colección en lugar de múltiples parámetros (por supuesto la sintaxis anterior sigue siendo válida)
$attributes:=["color"; "fontBold"; "fontItalic"; "fontSize"]
WP RESET ATTRIBUTES($range1; $attributes)
WP RESET ATTRIBUTES($range2; $attributes)
WP RESET ATTRIBUTES($range3; $attributes)
WP TABLE APPEND ROW: ¡fórmulas, colecciones y retornos de funciones!
Los parámetros de este comando ahora pueden ser del tipo fórmula o una fórmula con nombre (Recordatorio : una fórmula con nombre es un objeto que contiene tanto la fórmula como el nombre de la fórmula… vea este BLOG).
Entonces, los parámetros pueden ser pasados al comando como una colección y lo mejor de todo, ¡el comando ahora devuelve un elemento fila!
$row:=WP Table append row($table; "Reference"; "Date"; "Time"; "rnd 1"; "rdn 2")
WP SET ATTRIBUTES($row; wk background color; "lightgrey")
$colItems:=[]
$colItems.push("KX-825")
$colItems.push(Formula(Current date))
$colItems.push(Formula(String(Current time; HH MM SS)))
$colItems.push(Formula(Random))
$colItems.push({name: "RND NUMBER"; formula: Formula(Random)})
$row:=WP Table append row($table; $colItems)
WP INSERTAR IMAGEN
Cuando se inserta un elemento en un documento, generalmente es útil tener acceso inmediato a este elemento. Por lo tanto, el comando WP INSERT PICTURE se convierte en una función WP Insert picture y devuelve un elemento picture. Por ejemplo, es posible que desee enmarcar una imagen inmediatamente después de insertarla. Además, ¡este comando puede aceptar ahora un 4D.Archivo como argumento!
$pictureFile:=File(Folder(fk resources folder).path+"bullet.png"; fk posix path)
$picture:=WP Insert picture(WParea; $pictureFile; wk append)
$attributes:={}
$attributes[wk margin]:="8pt"
$attributes[wk padding]:="5pt"
$attributes[wk border width]:="2pt"
$attributes[wk border style]:=wk solid
$attributes[wk border color]:="navy"
WP SET ATTRIBUTES($picture; $attributes)
DOCUMENTOS e IMÁGENES
Los comandos WP IMPORT DOCUMENT, WP EXPORT DOCUMENT, WP INSERT PICTURE y WP Add picture también se han modernizado, y ahora aceptan los argumentos 4D.File además de los tipos de argumento habituales.
$documentFile:=File("/RESOURCES/reference.4wp")
WParea:=WP Import document($documentFile)
$documentFile:=File("/DATA/CopyOfReference.4wp")
WP EXPORT DOCUMENT(WParea; $documentFile)
$pictureFile:=File("/RESOURCES/bullet.png")
$picture3:=WP Insert picture(WParea; $pictureFile; wk append)
$pictureFile:=File("/RESOURCES/bullet.png")
$picture:=WP Add picture(WParea; $pictureFile)
«INSERTAR CUERPO DEL DOCUMENTO» EN LUGAR DE «INSERTAR DOCUMENTO»
Para mayor claridad, el comando WP INSERT DOCUMENT ha pasado a llamarse WP Insert document body, ya que esto es de hecho lo que hace.
Cuando se invoca, se inserta el cuerpo del documento. Se ignoran los encabezados, pies de página, imágenes ancladas y cuadros de texto. La única excepción: ¡las hojas de estilo también se importan!
Como puede ver en el ejemplo siguiente, ¡este comando devuelve ahora un rango correspondiente al cuerpo importado!
$file:=File("/RESOURCES/Main.4wp")
$main:=WP Import document($file)
$pictureFile:=File("/RESOURCES/bullet.png")
$sub:=WP Import document($pictureFile)
$range:=WP Insert document body($main; $sub; wk append)
MÁS INFORMACIÓN SOBRE RANGOS
Algunos comandos eran silenciosos y devolvían… nada, cuando a menudo un rango habría sido bastante útil. Los siguientes comandos hacen precisamente eso, ¡y todos devuelven rangos de texto!
- WP INSERT FORMULA
- WP INSERT BREAK
- WP INSERT DOCUMENT BODY (antes WP INSERT DOCUMENT)
$range:=WP Insert formula(WParea; Formula(Current date); wk append)
WP SET ATTRIBUTES($range; {color: "red"; fontItalic: 1; fontBold: 0})
BIENVENIDAS LAS NUEVAS FUNCIONES
Secciones
Las secciones tienen nombres e índices (son atributos), pero acceder a esta información no era fácil.
Ahora es un juego de niños con las nuevas funciones This.sectionIndex y This.sectionName, que pueden insertarse como fórmulas directamente en sus documentos.
Índices de páginas
Si lo desea, ahora puede acceder al índice de páginas con la función This.pageIndex.
He aquí una explicación rápida: a diferencia de la función This.pageNumber, cuyo valor puede variar (se fija o se restablece por sección), el índice de página comienza siempre en 1 y depende exclusivamente de la paginación.
Por ejemplo, un documento puede contener tres secciones cuyos números de página empiecen sistemáticamente en 1. La parte del preámbulo va del 1 al 30, la parte principal del 1 al 200 y la parte del apéndice del 1 al 8. En este caso, el índice de páginas empezará siempre en 1 y dependerá exclusivamente de la paginación. En este caso, el índice de páginas irá del 1 al 238.
Conclusión
No hay duda de que los comandos simplificados harán la vida más fácil a los desarrolladores de 4D Write Pro, y simplificarán la revisión y el mantenimiento del código. ¡Esperamos sus comentarios en el foro!