Les commandes de 4D Write Pro sont à nouveau optimisées !

Traduit automatiquement de Deepl

A chaque nouvelle version, nous prenons en compte les retours que nous recevons de nos clients sur l’utilisation générale de 4D Write Pro et de ses commandes. Tout en restant 100% compatibles, certaines commandes et fonctions du langage évoluent !

Certaines commandes, dont la syntaxe a été améliorée dans 4D 20 R8, permettent désormais l’utilisation de paramètres modernes tels que les objets ou les collections. D’autres sont devenues des fonctions, ce qui facilite leur utilisation. Enfin, un certain nombre de nouvelles fonctions ont été créées. Tout cela rendra votre code plus simple, plus générique et plus facile à maintenir !

WP GET/SET ATTRIBUTES : Tous les attributs dans un seul objet !

L’une des commandes les plus populaires est WP SET ATTRIBUTES, car elle peut être utilisée pour toutes sortes de cibles, d’un simple caractère à l’ensemble du document. Cette commande peut désormais recevoir un objet en paramètre, plutôt que des paires attribut-valeur.

Exemple de code

$attributes:={color: "red"; fontBold: 0; fontItalic: 1; fontSize: "16pt"}

WP SET ATTRIBUTES($range1; $attributes)
WP SET ATTRIBUTES($range2; $attributes)
WP SET ATTRIBUTES($range3; $attributes)

De la même manière, il est possible de recevoir dans un objet tout ou partie des attributs d’une plage ou d’un élément. Ceci est très utile si vous souhaitez appliquer les mêmes attributs à une autre cible… Si vous ne passez qu’un seul paramètre, l’objet retourné contiendra tous les attributs, mais vous pouvez limiter cela en utilisant une collection !

$attributes:=WP Get attributes($range; ["color"; "fontItalic"])

Enfin, la commande WP RESET ATTRIBUTES accepte désormais une collection au lieu de paramètres multiples (bien entendu, la syntaxe précédente reste valable)

$attributes:=["color"; "fontBold"; "fontItalic"; "fontSize"]

WP RESET ATTRIBUTES($range1; $attributes)
WP RESET ATTRIBUTES($range2; $attributes)
WP RESET ATTRIBUTES($range3; $attributes)

WP TABLE APPEND ROW : formules, collections et retours de fonctions !

Les paramètres de cette commande peuvent maintenant être de type formule ou formule nommée (Rappel : une formule nommée est un objet contenant à la fois la formule et le nom de la formule… voir ce BLOG).

Ensuite, les paramètres peuvent être passés à la commande comme une collection et surtout, la commande renvoie maintenant un élément de ligne !

$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 INSERT PICTURE

Lorsque l’on insère un élément dans un document, il est généralement utile d’avoir un accès immédiat à cet élément. La commande WP INSERT PICTURE devient donc une fonction WP Insert picture et renvoie un élément picture. Par exemple, on peut vouloir encadrer une image immédiatement après l’avoir insérée. De plus, cette commande peut désormais accepter un 4D.File comme argument !

$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)

DOCUMENTS et IMAGES

Les commandes WP IMPORT DOCUMENT, WP EXPORT DOCUMENT, WP INSERT PICTURE et WP Add picture ont également été modernisées et acceptent désormais les arguments 4D.File en plus des types d’arguments habituels.

$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)

« INSERT DOCUMENT BODY » AU LIEU DE « INSERT DOCUMENT »

Pour plus de clarté, la commande WP INSERT DOCUMENT a été renommée WP Insert document body, car c’est en fait ce qu’elle fait.

Lorsqu’elle est appelée, le corps du document est inséré. Les en-têtes, les pieds de page, les images ancrées et les zones de texte sont ignorés. Seule exception : les feuilles de style sont également importées !

Comme vous pouvez le voir dans l’exemple ci-dessous, cette commande renvoie maintenant une plage correspondant au corps importé !

$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)

PLUS D’INFOS SUR LES PLAGES

Certaines commandes étaient silencieuses et ne renvoyaient… rien, alors qu’une plage aurait souvent été très utile. C’est ce que font les commandes suivantes, qui renvoient toutes des plages de texte !

  • WP INSERT FORMULA
  • WP INSERT BREAK
  • WP INSERT DOCUMENT BODY (anciennement WP INSERT DOCUMENT)
$range:=WP Insert formula(WParea; Formula(Current date); wk append)
WP SET ATTRIBUTES($range; {color: "red"; fontItalic: 1; fontBold: 0})

BIENVENUE AUX NOUVELLES FONCTIONNALITÉS

Les sections

Les sections ont des noms et des index (ce sont des attributs), mais il n’était pas facile d’accéder à ces informations.

C’est désormais un jeu d’enfant avec les nouvelles fonctions This.sectionIndex et This.sectionName, qui peuvent être insérées sous forme de formules directement dans vos documents !

Index des pages

Si vous le souhaitez, vous pouvez désormais accéder à l’index des pages grâce à la fonction This.pageIndex.

Petite explication : contrairement à la fonction This.pageNumber, dont la valeur peut varier (elle est définie ou réinitialisée par section), l’index des pages commence toujours à 1 et dépend exclusivement de la pagination.

Par exemple, un document peut contenir trois sections dont les numéros de page commencent systématiquement à 1. La partie préambule va de 1 à 30, la partie principale de 1 à 200 et la partie annexe de 1 à 8. Dans ce cas, l’index des pages ira de 1 à 238.

Conclusion

Il ne fait aucun doute que les commandes simplifiées faciliteront la vie des développeurs de 4D Write Pro et simplifieront la révision et la maintenance du code. Nous attendons avec impatience vos commentaires sur le forum !

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.