Franchement, nous aimons les objets. 4D Write Pro utilise des objets comme entrée/sortie de commandes et de fonctions pour manipuler des documents, du texte, des paragraphes, etc. Dans cet article de blog, nous allons vous montrer quatre façons différentes d’utiliser les objets avec 4D Write Pro.
Définition des attributs
Prenons un exemple simple. Vous souhaitez définir la police, la taille et le poids du texte sélectionné sur « Arial », « Bold » et « 16pt ».
Tout d’abord, saisissez le texte sélectionné sous forme de plage.
$range:=WP Get selection(WParea)
Rappel : WP Get selection ne renvoie pas le texte, mais la plage correspondant au texte sélectionné. Cette plage a plusieurs attributs qui sont visibles dans le débogueur : « start », « end », « type », et « owner ».
Ensuite, définissez les attributs avec la commande WP SET ATTRIBUTES pour définir les attributs :
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)
Ce code est facile à lire et à écrire grâce aux constantes et ,dans certains cas, aux constantes intelligentes (comme wk true sur la troisième ligne).
Alternative 1 : OB SET
Tant que $range est un objet et wk font xxx un attribut, vous pouvez envisager d’utiliser la commande OB SET pour faire la même chose.
Et vous savez quoi ? Cela fonctionne très bien ! Le code ci-dessous fait exactement la même chose :
OB SET($range;wk font family;"Arial")
OB SET($range;wk font size;16)
OB SET($range;wk font bold;wk true)
On peut même utiliser les mêmes constantes. La seule différence est qu’il n’est plus évident que ce code s’applique à un document 4D Write Pro. Hmmmmm. Examinons la deuxième solution.
Alternative 2 : Notation d’objet
Si vous avez activé la notation d’objet dans vos bases de données, vous aimeriez l’utiliser autant que possible, n’est-ce pas ?
Ce code fonctionnera-t-il aussi ?
$range.fontFamily:="Arial"
$range.fontSize:=16
$range.fontBold:=wk true
Oui, il fonctionne ! Et il présente quelques avantages supplémentaires : code compact, facile à lire, et le résultat est – bien sûr – exactement le même.
Une petite note d’avertissement : Ecrit de cette manière, il n’y a pas d’auto-complétion, et les constantes /smart constants nécessitent une attention particulière car elles sont sensibles à la casse (par exemple fontFamily fonctionnera mais pas FontFamily ). Donc si vous écrivez ce genre de code, nous vous suggérons de faire très attention 😉
Existe-t-il un autre choix ? Oui, il y en a un !
Alternative 3 : Notation des objets avec des parenthèses
Lanotation d’objet est vraiment puissante. Le nom des attributs peut être évalué s’il se trouve entre crochets [« monAttribut »]. Ainsi, lorsque vous écrivez
contact["name"]:="Brown"
c’est l’équivalent exact d’écrire
contact.name:="Brown"
Qu’est-ce que cela signifie pour 4D Write Pro ? La réponse courte est que vous pouvez utiliser la Notation Objet ET les constantes !
$range[wk font family]:="Arial"
$range[wk font size]:=16
$range[wk font bold]:=wk true
Cette dernière alternative est compacte, facile à lire/écrire, et elle utilise des constantes… un gagnant sur toute la ligne !
Qu’en est-il de la lecture des attributs ?
Il en va de même pour la lecture des attributs. Les exemples de code suivants sont valables.
WP GET ATTRIBUTES($range;wk font family;$family)
WP GET ATTRIBUTES($range;wk font size;$size)
WP GET ATTRIBUTES($range;wk font bold;$bold)
Alternative 1 : OB GET
$family:=OB Get($range;wk font family)
$size:=OB Get($range;wk font size)
$bold:=OB Get($range;wk font bold)
Alternative 2 : Notation des objets
$family:=$range.fontFamily
$size:=$range.fontSize
$bold:=$range.fontBold
Alternative 3 : Notation d’objet avec parenthèses
$family:=$range[wk font family]
$size:=$range[wk font size]
$bold:=$range[wk font bold]
Comme vous pouvez le constater, plusieurs façons de programmer peuvent conduire au même résultat. C’est maintenant à vous de décider de la direction à prendre !