Quatre façons différentes d’utiliser les objets avec 4D Write Pro !

Traduit automatiquement de Deepl

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 !

Roland Lannuzel
- Product Owner & 4D Expert - Après avoir étudié l'électronique, Roland s'est lancé dans l'informatique industrielle en tant que développeur et consultant, créant des solutions pour les clients avec une variété de bases de données et de technologies. À la fin des années 80, il est tombé amoureux de 4D et l'a utilisé pour écrire des applications commerciales, notamment des systèmes de comptabilité, de facturation et de messagerie électronique. Il a rejoint la société en 1997 et a contribué à la conception de spécifications, d'outils de test et de démonstrations, ainsi qu'à la formation et à la présentation de la communauté 4D lors de nombreuses conférences. Il continue à façonner activement l'avenir de 4D en définissant de nouvelles fonctionnalités et des outils de développement de bases de données.