Francamente, nos encantan los objetos. 4D Write Pro utiliza objetos como entrada/salida de comandos y funciones para manipular documentos, textos, párrafos, etc. En esta entrada del blog, te mostraremos cuatro formas diferentes de usar objetos con 4D Write Pro.
Estableciendo atributos
Usemos un ejemplo sencillo. Usted quiere establecer la fuente, el tamaño y el peso del texto seleccionado a «Arial», «Bold» y «16pt».
Primero, capture el texto seleccionado como un rango.
$range:=WP Get selection(WParea)
Recordatorio: WP Get selection no devuelve el texto, devuelve el rango que coincide con el texto seleccionado. Este rango tiene varios atributos que son visibles en el depurador: «inicio», «fin», «tipo» y «propietario».
A continuación, defina los atributos con el WP SET ATTRIBUTES comando:
WP SET ATTRIBUTES($range;wk font family; "Arial")
WP SET ATTRIBUTES ($range;wk font size;16)
WP SET ATTRIBUTES (
$range;wk font bold;wk true)
Este código es fácil de leer y escribir gracias a las constantes y, en algunos casos, a las constantes inteligentes (como wk true en la tercera línea).
Alternativa 1: OB SET
Mientras que $range es un objeto y wk font xxx es un atributo, podrías considerar usar el comando OB SET para hacer lo mismo.
¿Y sabes qué? Funciona muy bien. El código siguiente hace exactamente lo mismo:
OB SET($range;wk font family; "Arial")
OB SET ($range;wk font size;16)
OB SET (
$range;wk font bold;wk true)
Incluso se pueden utilizar las mismas constantes. La única diferencia es que ya no es obvio que este código se aplique a un documento de 4D Write Pro. Hmmmmm. Veamos la segunda alternativa.
Alternativa 2: Notación de objetos
Si ha activado la notación de objetos en sus bases de datos, le gustaría utilizarla tanto como sea posible, ¿verdad?
¿Funcionará también este código?
$range.fontFamily:="Arial"
$range .fontSize:=16
$range .fontBold:=wk true
Sí, funciona. Y viene con un par de ventajas adicionales: código compactado, fácil de leer, y el resultado es -por supuesto- exactamente el mismo.
Una pequeña nota de precaución: Escrito así, no hay autocompletado, y las constantes/smart constants requieren un cuidado extra porque son sensibles a las mayúsculas y minúsculas(por ejemplo, fontFamily funcionará pero FontFamily no). Así que si escribe este tipo de código, le sugerimos que sea muy cuidadoso 😉
¿Hay otra opción? Sí, la hay.
Alternativa 3: Notación de objetos con paréntesis
La Notación Objeto es realmente poderosa. El nombre de los atributos puede ser evaluado si está entre corchetes [«miAtributo»]. Así que cuando escribes
contact["name"]:="Brown"
es el equivalente exacto de escribir
contacto.nombre:="Marrón"
¿Qué significa esto para 4D Write Pro? La respuesta corta es que puede utilizar la Notación Objeto y las constantes.
$range[wk font family]:="Arial"
$range [wk font size]:=16
$range [
wk font bold]:=wk true
Esta alternativa final es compacta, fácil de leer/escribir, y utiliza constantes… ¡un ganador total!
¿Qué pasa con la lectura de atributos?
Lo mismo ocurre con la lectura de atributos. Los siguientes ejemplos de código son válidos.
WP GET ATTRIBUTES($range;wk font family;$family)
WP GET ATTRIBUTES ($range;wk font size;$size)
WP GET ATTRIBUTES (
$range;wk font bold;$bold)
Alternativa 1: OB GET
$family:=OB Get($range;wk font family)
$size :=OB Get($range;wk font size)
$bold :=OB Get($range;wk font bold
)
Alternativa 2: Notación de objetos
$family:=$range.fontFamily
$size :=$range.fontSize
$bold:=$range.fontBold
Alternativa 3: Notación de objetos con paréntesis
$family:=$range[wk font family]
$size :=$range[wk font size]
$bold :=$range[wk font bold]
Como puede ver, varias formas de programar pueden llevar al mismo resultado. Ahora te toca a ti decidir qué dirección tomar.