bb c LiveCycle Designer ES2 Scripting Basics

bb c LiveCycle Designer ES2 Scripting Basics
bc
LiveCycle® Designer ES2 Scripting Basics
Adobe® LiveCycle® Designer ES2
Octobre 2009
Version 9
© 2009 Adobe Systems Incorporated. All rights reserved.
Adobe® LiveCycle® Designer ES2 (9.0) Scripting Basics pour Microsoft® Windows®
Édition 4.0, Octobre 2009
This user reference is licensed for use under the terms of the Creative Commons Attribution Non-Commercial 3.0 License. This
License allows users to copy, distribute, and transmit the guide for noncommercial purposes only so long as (1) proper attribution to
Adobe is given as the owner of the guide; and (2) any reuse or distribution of the guide contains a notice that use of the guide is governed
by these terms. The best way to provide notice is to include the following link. To view a copy of this license, visit
http://creativecommons.org/licenses/by-nc-sa/3.0/.
Adobe, Adobe logo, Adobe Reader, Acrobat, and LiveCycle are either registered trademarks or trademarks of Adobe Systems
Incorporated in the United States and/or other countries. Microsoft and Windows are either trademarks or registered trademarks of
Microsoft Corporation in the United States and/or other countries. All other trademarks are the property of their respective owners.
Adobe Systems Incorporated, 345 Park Avenue, San Jose, California 95110, USA.
3
Table des matières
A propos de ce document
A qui s'adresse ce document ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Objet et contenu du guide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Informations complémentaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1. A propos des scripts dans Designer ES2
Fonctionnement des scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Objets prenant en charge les calculs et les scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Comprendre les relations entre les objets de la Bibliothèque d'objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Configuration de l’espace de travail Designer ES2 pour les scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2. Configuration de LiveCycle Designer ES2 pour les scripts
Pour afficher l’éditeur de script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Pour passer de la vue uniligne à la vue multiligne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Pour paramétrer le langage de script par défaut pour les nouveaux formulaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Pour paramétrer le langage de script par défaut pour le formulaire en cours . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Pour modifier le langage de script par défaut pour un modèle de formulaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Pour définir l'application de traitement par défaut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Pour afficher des caractères en arabe, hébreu, thaï et vietnamien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Utilisation de l'espace de travail pour le débogage des calculs et des scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
15
15
15
15
15
16
16
3. Création de calculs et de scripts
Globaliser des scripts par propagation de l'événement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Pour activer la propagation de l'événement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Conventions de dénomination des objets et des variables dans une conception de formulaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Choix du langage de script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Pour créer un calcul ou un script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Pour rechercher du texte ou d'autres éléments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Pour remplacer du texte ou d'autres éléments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Pour utiliser des options de fin d'instructions pour créer des calculs et des scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Pour insérer automatiquement la syntaxe de référence d'objet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Détermination du moment de l'exécution de votre calcul ou script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Pour afficher les événements de script et les scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Détermination de l'emplacement d'exécution de votre calcul ou script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Test et débogage des calculs et des scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Pour vérifier la syntaxe des scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Utilisation des mesures de protection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
18
18
19
20
20
20
21
22
22
23
24
24
25
25
4. Evénements
Types d'événements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Evénements de traitement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Evénements interactifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Evénements d'application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Evénement calculate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Evénement change . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Evénement click . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Evénement docClose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Evénement docReady . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Evénement enter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Evénement exit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Evénement form:ready . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Evénement full . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
26
26
27
29
30
31
32
33
33
34
34
35
35
4
4. Evénements (Suite)
Evénement indexChange . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Evénement initialize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Evénement layout:ready . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Evénement mouseDown . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Evénement mouseEnter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Evénement mouseExit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Evénement mouseUp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Evénement postOpen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Evénement postPrint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Evénement postSave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Evénement postSign . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Evénement postSubmit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Evénement preOpen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Evénement prePrint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Evénement preSave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Evénement preSign . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Evénement preSubmit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Evénement validate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
36
36
37
38
38
39
39
40
41
41
42
42
43
43
44
44
45
45
5. Rédiger un script avec FormCalc et JavaScript
Utilisation de FormCalc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Utilisation de fonctions intégrées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Pour attacher une fonction FormCalc à un objet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Syntaxe de fonction intégrée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Création de calculs de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Utilisation de JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Création de scripts à l'aide de JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Règles d'application de plage stricte dans JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Pour attacher un script JavaScript à un objet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
50
50
51
51
51
53
53
54
57
6. Variables
Attribution de noms aux variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Pour définir une variable de texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Pour visualiser une définition de variable de texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Pour supprimer une variable de texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Utilisation des variables dans les calculs et les scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
58
58
59
59
59
7. Référence aux objets dans les calculs et les scripts
Référence aux propriétés et aux valeurs d'objet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Référence aux objets sans nom et aux objets répétés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Référence à l'objet actif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Raccourcis de la syntaxe de référence FormCalc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
60
62
63
63
8. Création et réutilisation des fonctions JavaScript
Pour créer un objet de script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
Pour référencer les fonctions JavaScript stockées dans un objet de script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
9. Utilisation des fragments de script
Propriétés des fragments de script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Pour créer un fragment de script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Pour insérer un fragment de script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
5
10. Débogage des calculs et des scripts
Débogage JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Conseils pour le débogage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
11. Utilisation d'une application hôte
12. Utilisation du modèle d'événement
13. Conversion de scripts Acrobat en scripts Designer ES2
Conversion de formulaires Acrobat contenant des scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
Utilisation d'objets JavaScript d'Acrobat dans Designer ES2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Objets JavaScript d'Acrobat pris en charge dans Designer ES2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
14. Exemples de tâches de script courantes
Modification des couleurs d'arrière-plan des champs, des zones remplissables et des sous-formulaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
Masquage et affichage d'objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
Exclure un objet de l'ordre de tabulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
Modification des propriétés visuelles d'un objet sur le client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
Obtention de la valeur actuelle ou de la valeur précédente d'une liste déroulante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
Préserver le format en texte enrichi lors de la copie de valeurs de champs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
Ajustement de la hauteur d'un champ au moment de l'exécution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
Définition d'une valeur de champ obligatoire au moment de l'exécution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
Calcul des sommes d'un champ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
Mise en surbrillance des champs en réponse aux interactions de l'utilisateur final . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
Réinitialisation des valeurs du sous-formulaire actif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
Modification de la visibilité d'un objet de conception de formulaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
Utilisation des propriétés du gestionnaire d'instances pour contrôler les sous-formulaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
Utilisation des méthodes du gestionnaire d'instances pour contrôler les sous-formulaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
Utilisation du gestionnaire d'instances pour contrôler les sous-formulaires au moment de l'exécution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
Index
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
6
A propos de ce document
Bienvenue dans Adobe® LiveCycle® Designer ES Scripting Basics. Ce document relatif à la rédaction de scripts vous propose un aperçu de
l'utilisation des calculs et scripts Designer ES2 en vue de la création et de l'optimisation de formulaires dans Designer ES2. Vous pouvez par
exemple utiliser des calculs et scripts pour effectuer les opérations suivantes :
• Modifier le comportement et l'aspect des objets au moment de l'exécution ;
• Contrôler la présentation des valeurs de champ ;
• Proposer une interaction avec les personnes remplissant les formulaires à l'aide de boîtes de dialogue et d'indications visuelles ;
• Automatiser le remplissage de formulaires ;
• Contrôler l'environnement hôte ;
• Communiquer avec les services Web ;
• Communiquer avec les bases de données et remplir des formulaires avec des données provenant de sources de données.
Vous trouverez dans ce guide des informations détaillées, des exemples de calculs et de scripts Designer ES2 ainsi que la méthode d'accès à
ces derniers. Vous trouverez également des informations sur l'utilisation de l'éditeur de script Designer ES2. Les calculs et scripts
Designer ES2 sont un excellent moyen d'optimiser et de développer vos formulaires Designer ES2.
A qui s'adresse ce document ?
Ce guide est destiné aux auteurs et développeurs de formulaire souhaitant utiliser des calculs et scripts pour décupler les fonctionnalités des
formulaires Designer ES2. Nous partons du principe que vous connaissez les langages de script, en particulier JavaScript™, ainsi que les
modèles d'objet. Vous devez également savoir utiliser Adobe Acrobat® Professional ou Acrobat Standard et savoir travailler dans un
environnement XML structuré.
Objet et contenu du guide
Vous trouverez dans ce guide les informations suivantes :
•
•
•
Une introduction à l'utilisation des calculs et scripts Designer ES2 pour une conception plus étendue de vos formulaires ;
Des informations détaillées et claires, ainsi que des exemples de fonctions de calculs et scripts Designer ES2 ;
Des références à d'autres ressources proposant des informations supplémentaires relatives à la rédaction de scripts Designer ES2 et aux
technologies associées.
Une fois que vous avez lu ce guide, vous devriez être fin prêt à utiliser les calculs et scripts Designer ES2. Vous verrez que les descriptions et
exemples contenus dans ce guide vous donnent suffisamment d'indications et d'informations pour vous permettre d'effectuer vos projets.
LIVECYCLE DESIGNER ES2 7
A propos de ce document
LiveCycle Designer ES2 Scripting Basics
Informations complémentaires
Adobe propose un grand éventail de ressources dédiées à la rédaction de scripts Designer ES2 et destinées aussi bien aux auteurs qu'aux
développeurs de formulaires. L'illustration et la section suivantes décrivent les différentes ressources disponibles, ainsi que leur
emplacement.
Aide Designer ES2
L'aide de Designer ES2 contient des informations détaillées sur l'utilisation du produit, notamment des informations sur l'utilisation des
calculs et des scripts. Elle doit être votre source de références pour toutes les questions relatives à Designer ES2. Vous pouvez accéder à l'aide
de Designer ES2 du menu Aide lorsque Designer ES2 est installé ou via Internet sur http://www.adobe.com/go/learn_lc_designer_9_fr.
Guide Designer ES2 Scripting Basics
Le guide propose un aperçu de la création des calculs et scripts pour une utilisation dans Designer ES2. Il est destiné à vous aider lors de la
création de calculs et scripts à l'aide de FormCalc et JavaScript.
Articles et bibliothèque de référence
Le document relatif aux références sur les objets de script de Designer ES2 est un document de référence détaillé des modèles, objets,
propriétés et méthodes disponibles dans Designer ES2. Le document PDF est conçu comme référence uniquement, il ne donne pas
d'informations sur la création de calculs ou de scripts. Voir Designer ES2 Source de référencesur les scripts.
LIVECYCLE DESIGNER ES2 8
A propos de ce document
LiveCycle Designer ES2 Scripting Basics
Forums utilisateurs
Le forum de Designer ES2 est un point de rencontre pour les professionnels souhaitant discuter de questions relatives à Designer ES2. Il est
possible de répondre aux questions des utilisateurs, de signaler un bogue ou un problème trouvé dans le produit, ou de poser des questions
à d'autres créateurs de formulaires ou à des experts Adobe. Pour plus de détails, rendez-vous à l'adresse www.adobeforums.com.
Exemples de script
Les exemples de script sont des formulaires ou des lots contenant des instructions sur la méthode de création d'un formulaire exemple ainsi
que toutes les données utilisées pour créer et afficher ce dernier. De nouveaux exemples sont régulièrement ajoutés par les experts Adobe et
des tiers. Les exemples sont disponibles à l'adresse www.adobe.com/devnet/livecycle/samples.html.
9
1. A propos des scripts dans Designer ES2
Dans le processus de conception des formulaires, un développeur de formulaires peut utiliser des calculs et des scripts afin d'apporter à
l'utilisateur un confort d'utilisation amélioré. Vous pouvez ajouter des calculs et des scripts à la plupart des champs et objets. Par exemple,
le script JavaScript suivant multiplie les valeurs de deux champs numériques et affiche le résultat dans un troisième champ numérique :
NumericField3.rawValue = NumericField1.rawValue * NumericField2.rawValue;
A un niveau plus avancé, vous pouvez créer vos propres fonctions personnalisées répondant au mieux à vos besoins de traitement des
formulaires.
Designer ES2 reconnaît deux langages de script, chacun d'eux étant défini selon les besoins d'un type particulier de développeur de
formulaire. FormCalc est un langage immédiat, d'utilisation aisée, adapté aux fonctionnalités communes de tableaux. Il comprend diverses
fonctions intégrées conçues pour réduire le temps nécessaire au développement de votre modèle de formulaire. JavaScript, langage de script
puissant, offre une flexibilité optimale pour la création de scripts et vous permet de bénéficier des connaissances actuelles du langage.
Soyez conscient que l'ajout de scripts à un formulaire est une opération facultative. Vous pouvez choisir d'utiliser des scripts pour améliorer
le confort d'utilisation, mais Designer ES2 vous propose de nombreuses fonctions, parmi les plus puissantes, pour créer un formulaire sans
avoir à recourir aux scripts. Cependant, les scripts vous permettent de manipuler et de commander quasiment tous les aspects de votre
conception de formulaire.
Remarque : vous pouvez également utiliser la boîte de dialogue Créateur d'actions dans le menu Outils pour créer des fonctions interactives
communes dans des formulaires dotés d'une disposition souple, sans avoir à écrire de scripts.
Fonctionnement des scripts
Les scripts de Designer ES2 reposent sur un modèle d'événement qui vous permet de modifier divers aspects des objets de formulaire en
cours d'exécution. Les concepteurs de formulaires peuvent ajouter des scripts aux objets en fonction du moment souhaité pour l'exécution
du script. Vous pouvez par exemple choisir d'inclure le script suivant dans l'événement click d'un objet de bouton afin d'afficher un
message lorsque l'utilisateur clique sur le bouton au moment de l'exécution :
xfa.host.messageBox("Il s'agit d'un message à l'intention de l'utilisateur.", "Commentaires de
l'utilisateur", 3);
Les scripts associés à un événement particulier sont exécutés au moment où cet événement se produit. Certains événements peuvent se
produire à plusieurs reprises au cours d'une même session de remplissage d'un formulaire. Par exemple, le script suivant ajoute le chiffre 1
à la valeur active d'un champ numérique :
NumericField1.rawValue = NumericField1.rawValue + 1;
Si vous ajoutez ce script à l'événement calculate pour le champ NumericField1, le champ NumericField1 affiche la valeur 2 lors de la
première ouverture du formulaire. Ceci indique que l'événement calculate s'est produit deux fois dans la séquence d'événements exécutée
à l'ouverture du formulaire.
LIVECYCLE DESIGNER ES2 10
A propos des scripts dans Designer ES2
LiveCycle Designer ES2 Scripting Basics
Objets prenant en charge les calculs et les scripts
Le tableau suivant donne un rapide aperçu des scripts pris en charge par les objets standard inclus dans la palette Bibliothèque de
Designer ES2.
Objets prenant en charge les calculs et les scripts
Objets ne prenant pas en charge les calculs et les scripts
Bouton
Cercle
Bouton Envoyer par messagerie
Droite
Bouton Envoyer via HTTP
Image
Bouton Imprimer
Jeux de sous-formulaires
Bouton radio
Rectangle
Bouton Réinitialiser
Sections du tableau
Case à cocher
Texte
Champ de signature
Zone de contenu
Champ de texte
Champ décimal
Champ d'image
Champ du mot de passe
Champ numérique
Code à barres de formulaires pour support papier
Codes à barres
Date/Heure
Sous-formulaire
Tableau (y compris les rangées de contenu, les rangées
d'en-tête et les rangées de pied de page)
Zone de liste
Zone de liste déroulante
Comprendre les relations entre les objets de la Bibliothèque d'objets
Lorsque vous créez des calculs et des scripts dans Designer ES2, vous devez savoir que les objets auxquels vous ajoutez des scripts sont en
réalité définis comme objets XML dans l'architecture de formulaires XML sous-jacente. Cela signifie que l'onglet Standard de la palette
Bibliothèque d'objets contient une grande variété d'objets et que la plupart d'entre eux sont définis par le même objet XML. Par conséquent,
les différentes propriétés et méthodes de script disponibles dépendent de la définition de cet objet XML et non de l'objet présent dans la
palette Bibliothèque d'objets.
Les objets disponibles dans l'onglet Standard de la palette Bibliothèque d'objets dépendant de la même définition d'objet XML de base
partagent une série de propriétés et de méthodes communes. Reportez-vous à la section Guide de référence pour les scripts Designer ES2
pour déterminer la série de propriétés et de méthodes disponibles en fonction de l'objet XML de base correspondant. De même, chaque
définition d'objet XML de base contient un objet enfant qui contrôle de manière spécifique l'apparence visuelle de l'objet Designer ES2.
LIVECYCLE DESIGNER ES2 11
A propos des scripts dans Designer ES2
LiveCycle Designer ES2 Scripting Basics
Par exemple, si vous souhaitez consulter les propriétés et méthodes disponibles pour un objet Champ Date/Heure dans Designer ES2,
commencez par l'objet field. Si vous souhaitez consulter l'objet XML correspondant qui contrôle l'apparence visuelle du champ
Date/Heure, consultez l'objet dateTimeEdit.
Le tableau ci-dessous illustre le mappage entre les objets visibles dans l'onglet Standard de la palette Bibliothèque d'objets dans Designer ES2,
ainsi que l'objet de l'architecture de formulaires XML correspondant.
Objet de la bibliothèque d'objets standard
Objet de l'architecture de formulaires XML (base)
Objet de l'architecture de formulaires XML (IU)
Bouton
champ
button
Bouton Envoyer par messagerie
champ
button
Bouton Envoyer via HTTP
champ
button
Bouton Imprimer
champ
button
Bouton radio
champ
checkButton
Bouton Réinitialiser
champ
button
Case à cocher
champ
checkButton
Champ de signature
champ
signature
Champ de texte
champ
textEdit
Champ décimal
champ
numericEdit
Champ d'image
champ
imageEdit
Champ du mot de passe
champ
passwordEdit
Champ numérique
champ
numericEdit
Code à barres de formulaires pour support
papier
champ
barcode
Codes à barres
champ
barcode
Date/Heure
champ
dateTimeEdit
Sous-formulaire
sous-formulaire
N/A
Tableau (y compris les rangées de contenu, les
rangées d'en-tête et les rangées de pied de
page)
sous-formulaire
N/A
Zone de liste
champ
choiceList
Zone de liste déroulante
champ
choiceList
Configuration de l’espace de travail Designer ES2 pour les scripts
L'éditeur de script est l'endroit où vous créez, modifiez et visualisez les calculs et les scripts d'un formulaire donné. Vous pouvez, par
exemple, faire appel à l'éditeur de script pour écrire un calcul simple qui ajoute deux champs numériques ou scripts complexes qui modifient
la présentation du formulaire selon les actions de l'utilisateur final. Designer ES2 prend en charge les scripts écrits dans son propre langage
(FormCalc) ou en langage JavaScript.
LIVECYCLE DESIGNER ES2 12
A propos des scripts dans Designer ES2
LiveCycle Designer ES2 Scripting Basics
Par défaut, l'éditeur de script est affiché dans la partie supérieure de l'espace de travail de Designer ES2. Vous pouvez toutefois l’ancrer à
l'emplacement de votre choix. Il propose à la fois une vue uniligne et une vue multiligne, entre lesquelles vous pouvez basculer librement en
fonction de vos besoins. La vue uniligne permet d'augmenter l'espace réservé à l'affichage de l'éditeur de disposition et des autres palettes.
La vue multiligne permet, quant à elle, d'augmenter l'espace réservé à la rédaction des scripts.
Vue uniligne : A. Champ d'édition de script
Vue multiligne : A. Syntaxe de référence B. Bouton Afficher les événements pour les objets enfant C. Bouton Fonctions D. Bouton Vérifier la syntaxe des scripts E. Champ
d'édition de script
Afficher Répertorie tous les événements de conception de formulaire qui permettent à l'utilisateur de rédiger des scripts. Tous les
événements qui ne s'appliquent pas à un objet en particulier apparaissent en grisé. Les événements qui contiennent un calcul ou un script
sont affichés avec un * (astérisque) à côté du nom de l'événement.
Affiche l'événement actuellement sélectionné dans la liste Afficher pour l'objet actif
et tous ses objets enfant. Si vous sélectionnez l'objet supérieur de la palette Hiérarchie, cette option affiche l'événement actuellement
sélectionné dans la liste Afficher pour tous les objets de votre formulaire.
Afficher les événements pour les objets enfant
Fonctions
Affiche une liste des fonctions intégrées FormCalc ou JavaScript, en fonction du langage de script sélectionné dans la liste
Langage.
Pour insérer une fonction sur votre champ d'édition de script, choisissez une fonction dans la liste et appuyez sur Entrée.
Vérifie tous les scripts d'un formulaire afin d'assurer une bonne syntaxe et répertorie toutes les erreurs
dans l'onglet Avertissements de la palette Rapport.
Vérifier la syntaxe des scripts
Langue Spécifie le langage de script à utiliser pour le calcul ou le script actuel. Deux options sont disponibles :
•
•
FormCalc
JavaScript
Le langage de script affiché dans la liste Langage correspond à l'option de langage de script que vous choisissez comme langage par défaut
pour les nouveaux formulaires dans le panneau Espace de travail dans la boîte de dialogue Options. Cependant, si vous modifiez le
réglage de langage de script pour le formulaire en cours dans l'onglet Valeurs par défaut dans la boîte de dialogue Propriétés du
formulaire, le langage de script affiché dans la liste Langage est modifié de la même manière pour tous les nouveaux scripts des nouveaux
événements. La modification de l'option de langage de script dans la boîte de dialogue Propriétés du formulaire n'affecte en rien le
langage de script pour les scripts existants. Si un événement contient déjà un script et que ce script est supprimé, l'éditeur de script
continue d'utiliser le même langage de script pour toute la durée de votre session de travail dans Designer ES2.
Exécuter sur Indique l'emplacement où le calcul ou le script doit être exécuté. Trois options sont disponibles :
LIVECYCLE DESIGNER ES2 13
A propos des scripts dans Designer ES2
LiveCycle Designer ES2 Scripting Basics
•
Client Les calculs et scripts sont exécutés pendant que l'application client (par exemple, Acrobat, Adobe Reader, ou un navigateur
Web) traite le formulaire.
•
•
Serveur Les calculs et scripts sont exécutés pendant que l'application serveur (par exemple, Formulaires ES2) traite le formulaire.
Client et serveur Les calculs et scripts sont exécutés pendant que l'application serveur (par exemple, Formulaires ES2) traite le
formulaire, sauf dans les cas où l'application client HTML prend en charge les scripts côté client. Il peut s'agir, par exemple, d'un
script accédant à la base de données pour insérer automatiquement un certain nombre de données dans un formulaire.
Activer la propagation de l'événement Spécifie que les événements de formulaires se propagent aux conteneurs parents.
LIVECYCLE DESIGNER ES2 14
A propos des scripts dans Designer ES2
LiveCycle Designer ES2 Scripting Basics
15
2. Configuration de LiveCycle Designer ES2 pour
les scripts
Pour afficher l’éditeur de script
❖ Choisissez Fenêtre > Editeur de script.
Remarque : vous pouvez utiliser le bouton d'ajustement pour ancrer ou désancrer rapidement l'éditeur de script lorsque celui-ci est affiché
dans l'espace de travail Designer ES2.
Pour passer de la vue uniligne à la vue multiligne
❖ Faites glisser la barre de la palette Editeur de script jusqu'à la taille de palette requise.
Remarque : la vue multiligne ajoute les options Tous les événements et Evénements avec scripts à la liste Afficher. L'option Tous les
événements affiche tous les événements d'un objet de conception de formulaire donné, même si l'événement ne contient ni calculs ni scripts.
L'option Evénements avec scripts affiche uniquement les événements d'un objet particulier qui contient des calculs ou des scripts.
Pour paramétrer le langage de script par défaut pour les nouveaux formulaires
1
Choisissez Outils > Options.
2
Cliquez sur Espace de travail
3
Dans la liste Langage par défaut pour les nouveaux formulaires, sélectionnez le langage de script par défaut à appliquer aux nouveaux
formulaires.
Pour paramétrer le langage de script par défaut pour le formulaire en cours
1
Choisissez Fichier > Propriétés du formulaire.
2
Cliquez sur l'onglet Valeurs par défaut.
3
Dans la liste Langage par défaut, sélectionnez le langage de script par défaut à appliquer au formulaire actif.
Pour modifier le langage de script par défaut pour un modèle de formulaire
1
Créez une conception de formulaire.
2
Choisissez Fichier > Propriétés du formulaire.
3
Cliquez sur l'onglet Valeurs par défaut.
4
Choisissez votre langage de script par défaut dans la liste Langage par défaut.
5
Faites une copie de sauvegarde du fichier du modèle de formulaire original situé dans le dossier Templates où Designer ES2 est installé.
6
Enregistrez la nouvelle conception de formulaire au format TDS et écrasez le modèle de formulaire correspondant. Par exemple,
enregistrez le fichier sous Letter.tds et écrasez le fichier Letter.tds situé dans le dossier Templates\Blank.
Pour définir l'application de traitement par défaut
1
Choisissez Fichier > Propriétés du formulaire.
2
Cliquez sur l'onglet Valeurs par défaut.
3
Choisissez votre application de traitement par défaut dans la liste Exécution par défaut sur le.
Remarque : cette procédure définit uniquement la valeur de l'application de traitement par défaut pour l'instance active du formulaire.
LIVECYCLE DESIGNER ES2 16
Configuration de LiveCycle Designer ES2 pour les scripts
LiveCycle Designer ES2 Scripting Basics
Pour éviter d'avoir à changer l'application de traitement par défaut chaque fois que vous créez un formulaire, vous devez modifier le
fichier de modèle de formulaire correspondant utilisé pour la création de nouvelles conceptions de formulaire.
Pour changer l'application de traitement par défaut pour un modèle de formulaire
1
Crée une nouvelle conception de formulaire.
2
Choisissez Fichier > Propriétés du formulaire.
3
Cliquez sur l'onglet Valeurs par défaut.
4
Choisissez votre application de traitement par défaut dans la liste Exécution par défaut sur le.
5
Faites une copie de sauvegarde du fichier du modèle de formulaire original situé dans le dossier Templates où Designer ES2 est installé.
6
Enregistrez la nouvelle conception de formulaire au format TDS et écrasez le modèle de formulaire correspondant. Par exemple,
enregistrez le fichier sous Letter.tds et écrasez le fichier Letter.tds situé dans le dossier Templates\Blank.
Pour afficher des caractères en arabe, hébreu, thaï et vietnamien
Pour afficher les caractères arabes, hébreux, thaïs et vietnamiens dans le panneau Source XML/Editeur de script, vous devez modifier les
paramètres de police utilisés par Designer ES2 dans ces panneaux. Sinon, Designer ES2 affiche des rectangles à l'emplacement des caractères
concernés.
1
Choisissez Outils > Options, puis Espace de travail dans la liste de gauche.
2
Sélectionnez l'une des options suivantes :
3
4
5
• Formatage de la syntaxe FormCalc pour définir la police dans l'éditeur de script lors de l'utilisation de FormCalc
• Formatage de la syntaxe JavaScript pour définir la police dans l'éditeur de script lors de l'utilisation de JavaScript
• Formatage de la syntaxe de la source XML pour définir la police dans le panneau Source XML
Dans la zone Options de polices, sélectionnez une police prenant en charge votre langue. Par exemple, Adobe Arabic prend en charge
l'arabe, Adobe Hebrew prend en charge l'hébreu, Adobe Thai prend en charge le thaï et Myriad® Pro et Minion® Pro prennent en charge
le vietnamien. Si la langue choisie ne se trouve pas sur votre système, vous pouvez la rechercher sur Internet.
Cliquez sur OK.
Cliquez sur OK pour refermer la boîte de dialogue.
Utilisation de l'espace de travail pour le débogage des calculs et des scripts
L'espace de travail Designer ES2 offre plusieurs solutions pour déboguer les calculs et les scripts.
LIVECYCLE DESIGNER ES2 17
Configuration de LiveCycle Designer ES2 pour les scripts
LiveCycle Designer ES2 Scripting Basics
Le tableau ci-dessous indique l'emplacement et le rôle des informations de débogage proposées dans les palettes et panneaux de
Designer ES2.
Emplacement dans l'espace de travail
Fonction
Panneau Avertissements de la palette
Rapport
Affiche les messages cible et d'avertissement ainsi que toutes les erreurs de syntaxe de script JavaScript ou FormCalc lorsque
vous choisissez la commande Vérifier la syntaxe des scripts du menu Outils ou que vous cliquez sur le bouton Vérifier la
syntaxe des scripts dans la barre d'outils Outils. Pour plus de détails, voir « Pour vérifier la syntaxe des scripts » à la page 25.
Lorsque vous cliquez deux fois sur un message d'avertissement de syntaxe dans l'onglet Avertissements, le script qui
contient l'erreur est chargé dans l'Editeur de script et la ligne contenant l'erreur est mise en surbrillance.
Vous pouvez également cliquer deux fois sur un message d'avertissement pour sélectionner l'objet associé dans la Vue de
conception de la palette Hiérarchie, puis appuyez sur F1 pour afficher les informations sur la manière de résoudre les
avertissements.
Pour vérifier les erreurs d'exécution JavaScript, vous pouvez activer la console JavaScript. Pour plus de détails, voir
« JavaScript Debugger dans Acrobat Professional » à la page 73.
Panneau Liaisons de la palette Rapport
Si vous prévoyez des champs dans votre conception de formulaire qui sont liés à une source de données, le panneau Liaisons
peut vous aider en affichant des listes de champs en fonction de la définition des liaisons de données que vous avez
effectuée. Par exemple, vous pouvez afficher la liste des champs avec liaisons de données globales uniquement ou
seulement ceux pour lesquels aucune liaison de données n'est définie. Cette fonction est particulièrement utile dans les
formulaires comportant un grand nombre de liaisons de données.
Panneau Journal de la palette Rapport
Affiche des messages de validation, des erreurs d'exécution de script JavaScript ou FormCalc et des erreurs de rendu de
formulaire générées par Designer ES2 lorsque vous importez ou enregistrez un formulaire ou que vous le prévisualisez dans
l'onglet Aperçu PDF.
Palette Hiérarchie
Vous pouvez vous servir de la palette Hiérarchie pour déterminer l'emplacement d'un objet de formulaire pour une syntaxe
de référence. La palette Hiérarchie donne une représentation graphique de la structure de votre formulaire. Elle présente le
contenu des panneaux Gabarit et Vue de conception.
La palette Hiérarchie affiche également les objets référencés sous le noeud Objets référencés. Un objet est référencé lorsqu'il
est ajouté à un formulaire uniquement en cas de besoin. Dès que des données sont enchaînées sur plusieurs pages ou zones
de contenu, des sous-formulaire de début et de fin de débordement sont insérés dans le formulaire aux endroits appropriés.
Panneau Liaison de la palette Objet
Chaque objet Designer ES2 pouvant être lié à une source de données possède un onglet Liaison dans la palette Objet. Si
vous liez un objet de votre conception de formulaire à un nœud de données particulier à partir de votre connexion de
données, la liste Liaison de données (Ouvrir, Enregistrer, Envoyer) affiche une syntaxe de référence FormCalc valide pour
l'accès à ce nœud de données. Vous pouvez utiliser la syntaxe de référence FormCalc dans d'autres calculs ou scripts lors des
tests.
Panneau Source XML
Le panneau Source XML contient le code XML de la conception de formulaire. Le code source XML définit tous les aspects
du formulaire. Vous pouvez vous servir du panneau Source XML pour vérifier la structure du modèle d'objet de formulaire
XML pour une conception de formulaire et pour comprendre la relation entre les objets et les propriétés. Dans la source XML,
les noms d'éléments XML sont équivalents aux noms d'objets dans le modèle d'objet de formulaire XML et les attributs sont
équivalents aux propriétés.
Lorsque vous sélectionnez un objet dans la palette Hiérarchie, puis cliquez sur le panneau Source XML, la première ligne de
l'élément correspondant est mise en surbrillance. Le nom de l'objet dans Designer ES2, tel qu'il est indiqué dans la palette
Hiérarchie, devient la valeur de l'attribut name dans la source XML.
Vous pouvez configurer les options dans la boîte de dialogue Outils > Options afin de visualiser la source dans le panneau
Source XML de manière à afficher ou masquer les numéros de ligne et à définir la couleur de la syntaxe, par exemple.
Evitez de modifier directement le code source XML.
Il peut être utile de modifier les options par défaut de l'éditeur de script afin de faciliter le débogage de vos calculs et scripts. Ces options
figurent dans le panneau Espace de travail de la boîte de dialogue Options. Pour y accéder, choisissez Outils > Options, puis sélectionnez
Espace de travail dans la liste à gauche. Vous pouvez par exemple choisir d'afficher les numéros de ligne dans l'éditeur de script ou de
modifier le formatage de la syntaxe FormCalc ou JavaScript.
18
3. Création de calculs et de scripts
Designer ES2 offre une grande variété de fonctions de calcul et de script prévues pour réaliser une multitude d'opérations. Par exemple, le
script suivant modifie la couleur de bordure appliquée à la zone de texte et la taille de police de la valeur du champ de texte :
TextField1.border.edge.color.value = "255,0,0";
TextField1.font.typeface = "Courier New";
Il peut être intéressant d'élaborer des formulaires plus complexes pour tirer parti des fonctions de script dans le but d'établir une connexion
à la source de données et de manipuler les données au moment de l'exécution. Pour obtenir des exemples de tâches de script courantes, voir
« Exemples de tâches de script courantes » à la page 92.
La création de calculs et de scripts dans Designer ES2 fait appel à une procédure générale que vous devez exécuter chaque fois que vous
attachez un calcul ou un script à un objet. Bien que toutes les étapes de la procédure ne soient pas nécessaires lors de la création d'un calcul
ou d'un script, il est conseillé de suivre le déroulement normal de la procédure pour éviter de générer des erreurs et d'obtenir des résultats
inattendus.
En règle générale, chaque fois que vous créez un calcul ou un script, voici les différentes tâches qu'il convient d'effectuer :
•
Sélectionnez l'objet auquel vous voulez attacher un calcul ou un script. Bien que vous puissiez créer des calculs et des scripts qui
manipulent la plupart des objets de la conception de formulaire, tous les objets de champ ne prennent pas en charge les événements de
formulaire. Pour obtenir une liste d'objets standard (incluse dans la palette Bibliothèque d'objets dans Designer ES2) qui prennent en
charge les scripts, voir « Objets prenant en charge les calculs et les scripts » à la page 10.
•
•
Ecrivez votre calcul ou votre script dans le champ de modification du script de l'éditeur de script.
Testez le calcul ou le script à partir du panneau Aperçu PDF ou de votre environnement de test.
Globaliser des scripts par propagation de l'événement
Il est possible de globaliser des scripts en activant la propagation de l'événement dans l'éditeur de script. Ce réglage permet à des événements
de formulaires de se propager aux conteneurs parents. La propagation de l'événement permet de réduire le nombre de scripts dans un
formulaire. Par exemple, vous pouvez créer un script global pour contrôler l'aspect de champs, de sous-formulaires ou de groupes
d'exclusion non valides. Voici des exemples d'événements globaux :
•
•
Un événement enter/exit/mouseEnter/mouseExit qui colore le champ actif
Un événement Change qui assure le suivi de l'utilisation des touches pendant une session de formulaire
Pour activer la propagation de l'événement
❖ Dans l'éditeur de script, sélectionnez Activer la propagation de l'événement.
Remarque : sélectionnez l'objet et écrivez le script au niveau du parent avant d'activer la propagation de l'événement.
Conventions de dénomination des objets et des variables dans une conception de formulaire
Lorsque vous définissez des calculs ou des scripts pour améliorer votre formulaire, soyez particulièrement vigilant quant aux noms que vous
donnez aux objets et aux variables dans une conception de formulaire. Évitez d'utiliser des noms de propriétés, de méthodes et d'objets de
modèle d'objet de formulaire XML pour désigner les objets et les variables dans la conception de formulaire. Les calculs et les scripts
risqueraient sinon de ne pas s'exécuter correctement.
Par exemple, si vous créez un nouveau champ de texte nommé x dans un objet de sous-formulaire nommé Subform1, vous pouvez accéder
à l'objet de champ de texte à l'aide de la syntaxe suivante :
Subform1.x.[expression]
LIVECYCLE DESIGNER ES2 19
Création de calculs et de scripts
LiveCycle Designer ES2 Scripting Basics
Cependant, les objets de sous-formulaire présentent déjà une propriété Modèle d'objet de formulaire XML nommée x qui représente la
position horizontale du sous-formulaire sur la conception de formulaire.
Pour éviter des conflits de noms, vous devez choisir des conventions d'attribution de noms de champ qui diffèrent des conventions
d'attribution de noms du modèle d'objet de formulaire XML. Par exemple, vous pouvez utiliser un des noms de champ suivants pour le
champ de texte de l'exemple ci-dessus :
• horizontalValue
• x_value
• xLetter
• hValue
Pour obtenir plus d'informations et la liste des noms d'objets, de méthodes et de propriétés Modèle d'objet de formulaire XML, voir le Guide
de référence pour les scripts de LiveCycle Designer.
Choix du langage de script
Designer ES2 prend en charge les scripts créés avec FormCalc et JavaScript. Avant d'écrire un script dans un formulaire, vous devez
connaître les avantages que présentent chacun des langages de script.
FormCalc est un langage de calcul qui inclut une grande variété de fonctions intégrées destinées à simplifier les fonctionnalités de formulaire
les plus courantes. Vous pouvez, par exemple, profiter des fonctions financières de FormCalc pour évaluer le montant du versement d'un
prêt, compte tenu du montant du prêt, du taux d'intérêt et du nombre de versements.
JavaScript est un langage de script plus puissant et varié. Outre une plus grande flexibilité, il vous permet de mettre à profit vos connaissances
en matière de script. Vous pouvez, par exemple, réutiliser les fonctions JavaScript existantes dans Designer ES2 pour limiter le nombre de
lignes de code à écrire.
Remarque : Designer ES2 prend en charge les versions JavaScript 1.6 et antérieures.
Vous pouvez sélectionner le langage de script utilisé pour les nouveaux formulaires dans le panneau Espace de travail de la boîte de dialogue
Options et pour le formulaire actif dans l'onglet Valeurs par défaut de la boîte de dialogue Propriétés du formulaire.
Le langage de script affiché dans la liste Langage de l'éditeur de script correspond à l'option de langage de script que vous choisissez comme
langage par défaut pour les nouveaux formulaires. Cependant, si vous modifiez le réglage de langage de script pour le formulaire actif, le
langage de script affiché dans la liste Langage est également modifié pour les nouveaux scripts des nouveaux événements. La modification
de l'option de langage de script dans la boîte de dialogue Propriétés du formulaire n'affecte en rien le langage de script utilisé pour les scripts
existants. Si un événement contient déjà un script et que ce script est supprimé, l'éditeur de script continue d'utiliser le même langage de
script pour toute la durée de votre session de travail dans Designer ES2.
Le tableau suivant souligne quelques différences essentielles entre FormCalc et JavaScript.
FormCalc
JavaScript
Langage de calcul natif Adobe dans Designer ES2 et Formulaires ES2
Langage de script standard utilisé dans de nombreuses applications logicielles
courantes
Scripts plus courts (généralement une ligne seulement)
Possibilité de scripts plus longs si nécessaire avec la possibilité d'utiliser des
boucles
Reconnaît les boucles de script
Non pris en charge par les guides de formulaire
Pris en charge par les guides de formulaire
Contient une variété de fonctions intégrées utiles qui réduisent le nombre de
scripts requis pour accomplir les tâches courantes sur les conceptions de
formulaire
Fournit l'accès aux fonctions de modèle d'objet Acrobat et aux fonctions
JavaScript d'Acrobat
Reconnaît les formats de date, d'heure, de devise et de nombre
Débogage possible en utilisant JavaScript Debugger dans Acrobat
Les fonctions URL intégrées Post, Put et Get permettent des interactions Web.
Possibilité de créer des fonctions adaptées à vos besoins
LIVECYCLE DESIGNER ES2 20
Création de calculs et de scripts
LiveCycle Designer ES2 Scripting Basics
Pour créer un calcul ou un script
1
Sélectionnez un objet de la conception de formulaire qui prend en charge les événements. Ajoutez par exemple un bouton à un nouveau
formulaire vierge.
2
Dans la liste Afficher de l'éditeur de script, choisissez un des événements qui s'applique à l'objet. L'événement que vous sélectionnez
détermine le moment d'exécution du script. Si vous écrivez un calcul ou un script ayant un impact sur un objet qui ne reconnaît pas les
événements de formulaire, vous devez ajouter votre calcul ou script à un objet de conception de formulaire qui prend en charge les
événements. Par exemple, à l'aide du nouvel objet de bouton, sélectionnez l'événement click dans la zone Afficher.
3
Choisissez le langage de script dans la liste Langage. Par exemple, pour le nouvel objet de bouton, sélectionnez JavaScript.
4
Dans la liste Exécuter sur, choisissez l'emplacement où le script doit être exécuté. Par exemple, pour le nouvel objet de bouton,
sélectionnez Client.
Vous pouvez choisir d'exécuter des calculs ou des scripts sur l'application cliente (par exemple, Acrobat ou un navigateur Web) ou
l'application serveur (par exemple, Formulaires ES2). Dans le cas de l'application cliente, le traitement des calculs et des scripts s'effectue
après la génération du formulaire. Dans le cas de l'application serveur, les calculs et des scripts sont exécutés au moment de la génération
du formulaire. La prévisualisation de votre formulaire à l'aide du panneau Aperçu PDF permet de simuler l'ouverture du formulaire dans
Acrobat. Ainsi, les scripts s'exécutent sur l'application client ou l'application client et serveur.
Remarque : si vous choisissez Client et serveur dans la liste Exécuter sur, le script est exécuté soit sur l'application client, soit sur l'application
serveur, selon l'application qui traite le formulaire.
5
Dans le champ Source du script, insérez le calcul FormCalc ou script JavaScript. Vous pouvez tirer profit de la fonctionnalité de fin
d'instructions de Designer ES2 pour créer les syntaxes de référence dans le cadre de calculs ou de scripts. Vous pouvez, par exemple,
ajouter le script JavaScript suivant au nouvel objet de bouton :
xfa.host.messageBox("Bonjour le monde !", "Création d'un fichier PDF", 3);
6
Une fois que vous avez terminé votre conception de formulaire, testez et déboguez vos calculs et scripts avant de les mettre en
production. Par exemple, pour le nouvel objet de bouton, prévisualisez le document PDF du formulaire à l'aide du panneau Aperçu PDF.
Cliquez sur l'objet de bouton pour afficher la zone de message indiquée à l'étape 5.
Pour plus d'informations sur les objets Designer ES2 qui prennent en charge la fonction de script, voir « Objets prenant en charge les
calculs et les scripts » à la page 10.
Pour rechercher du texte ou d'autres éléments
Vous pouvez rechercher rapidement dans le panneau Source XML ou dans l'éditeur de script toutes les occurrences d'une expression ou d'un
mot précis.
1
Dans le panneau Source XML ou dans l'éditeur de script, choisissez Edition > Rechercher ou cliquez avec le bouton droit pour afficher
le menu contextuel.
2
Dans la zone Rechercher, entrez le texte à rechercher.
3
Sélectionnez les autres options de votre choix.
4
Cliquez sur Rechercher suivant.
Pour annuler une recherche en cours, appuyez sur Echap ou cliquez sur le bouton Annuler.
Attention : bien qu'il soit possible de modifier le code source XML directement dans le panneau Source XML, il est recommandé de ne pas
faire de modifications à moins que vous ne soyez habitué à l'architecture de formulaires XML d'Adobe. Pour obtenir de plus amples
informations sur l'architecture de formulaires XML, voir www.adobe.com/devnet/livecycle/.
Pour remplacer du texte ou d'autres éléments
Vous pouvez remplacer automatiquement du texte. Par exemple, vous pouvez remplacer Cie par Compagnie.
1
Dans l'éditeur de script, sélectionnez Edition > Replace.
2
Dans la zone Rechercher, entrez le texte à rechercher.
LIVECYCLE DESIGNER ES2 21
Création de calculs et de scripts
3
Dans la zone Remplacer par, entrez le texte de substitution.
4
Sélectionnez les autres options de votre choix.
5
Cliquez sur Suivant, Remplacer ou Remplacer tout.
6
Pour annuler une recherche en cours, appuyez sur Echap ou cliquez sur le bouton Annuler.
LiveCycle Designer ES2 Scripting Basics
Pour remplacer le texte qui apparaît dans les scripts attachés à plusieurs objets sur votre formulaire, sélectionnez le sous-formulaire
puis effectuez la
racine de votre formulaire (par défaut : form1) et sélectionnez Afficher les événements pour les objets enfant
procédure ci-dessus.
Attention : bien qu'il soit possible de modifier le code source XML directement dans le panneau Source XML, il est recommandé de ne pas
faire de modifications à moins que vous ne soyez habitué à l'architecture de formulaires XML d'Adobe. Pour obtenir de plus amples
informations sur l'architecture de formulaires XML, voir www.adobe.com/devnet/livecycle/.
Pour utiliser des options de fin d'instructions pour créer des calculs et des scripts
La fonctionnalité de fin d’instructions de l’éditeur de script permet de créer des calculs et des scripts de manière interactive.
Durant la création d’un calcul ou d’un script, lorsque vous saisissez un point (« . ») immédiatement après un objet de formulaire ou un nom
de propriété, la fonctionnalité de fin d'instructions affiche une liste des méthodes et des propriétés disponibles. Si la liste de fin d'instructions
n'apparaît pas, assurez-vous d'avoir saisi correctement le nom de la propriété ou de l'objet et assurez-vous que celui-ci se trouve dans la plage
d'objets dans laquelle vous créez votre script. Pour plus d'informations au sujet du référencement des objets dans des calculs et des scripts,
voir « Référence aux objets dans les calculs et les scripts » à la page 60.
1
Tapez le nom d'un objet de conception de formulaire, d'une propriété ou d'un raccourci FormCalc valide suivi d'un point (« . »).
A. Propriétés de modèle d'objet de formulaire XML disponibles B. Affichage d'information
2
Choisissez la méthode ou la propriété que vous souhaitez appliquer à l'objet de modèle de formulaire et poursuivez l'écriture du script.
Pour fermer la liste de fin d'instructions sans sélectionner de fonction, appuyez sur la touche Echap.
La liste des propriétés disponibles du modèle d'objet de formulaire XML varie en fonction de l'objet de modèle de formulaire ou de la
propriété qui apparaît avant le point (« . »).
Remarque : la liste de fin d'instructions apparaît uniquement lors de l'accès aux objets, propriétés et méthodes dans l'objet Modèle d'objet
de formulaire XML. Elle n'apparaît pas lorsque vous travaillez avec des objets ou des méthodes JavaScript standard.
LIVECYCLE DESIGNER ES2 22
Création de calculs et de scripts
LiveCycle Designer ES2 Scripting Basics
Pour insérer automatiquement la syntaxe de référence d'objet
Au lieu d'utiliser la liste de fin d’instructions pour créer une syntaxe de référence d'objet, vous pouvez tirer parti de la fonction d'insertion
de syntaxe de référence d'objet pour intégrer automatiquement la syntaxe de référence à votre calcul ou à votre script. Cette fonction insère
la syntaxe de référence abrégée pour l'objet sélectionné à partir de la zone du canevas dans le champ Source du script de l'éditeur de script.
Vous perdrez ainsi beaucoup moins de temps lors de la création des calculs et des scripts et aurez l'assurance que la syntaxe est correcte.
1
Assurez-vous que le champ Source du script de l'éditeur de script est activé et que le curseur est positionné à l'endroit où vous souhaitez
insérer la référence d'objet.
2
Dans votre formulaire, cliquez sur l'objet à référencer tout en maintenant la touche Ctrl enfoncée. Le curseur se transforme en
vous assister dans la sélection d'un objet.
pour
Détermination du moment de l'exécution de votre calcul ou script
Chaque fois que vous créez des calculs et des scripts, vous êtes tenu d'associer chaque entrée à un événement de formulaire spécifique.
Chaque événement correspond à un changement dans l'état du formulaire qui se produit à un moment précis. Ce changement peut survenir
lors de la génération du formulaire sur le serveur par Formulaires ES2, sur le client par Acrobat ou par Adobe Reader pendant qu'un
utilisateur remplit un formulaire. Lorsque le changement d'état se produit, tous les calculs ou scripts associés à l'événement sont traités
automatiquement.
L'événement utilisé lors de la création d'un calcul ou d'un script détermine, dans une certaine mesure, les éléments à prendre en compte dans
le calcul ou le script. La quantité et le type d'informations disponibles dans un formulaire peut varier en fonction du moment choisi pour le
déclenchement de l'événement. Ainsi, un calcul ou un script ayant pour fonction de récupérer une valeur peut donner des résultats différents
selon qu'il est exécuté avant ou après les actions effectuées par la personne remplissant le formulaire. Pour plus d'informations sur les
événements, voir « Evénements » à la page 26.
Selon le type de formulaire que vous créez, il est possible que certains événements n'aient jamais lieu. Si vous concevez, par exemple, un
formulaire avec une disposition fixe et sans objet interactif, les événements interactifs associés aux actions de la personne chargée de remplir
le formulaire risquent de ne jamais se produire. Les scripts correspondant à ces événements ne seront donc pas exécutés.
Bien que Designer ES2 prenne en charge une grande variété d'événements de formulaire, il est possible de réaliser de très nombreuses tâches
de calcul et de script en ayant recours simplement à quelques événements se produisant lors de changements majeurs dans l'état du
formulaire, comme dans le cas des événements suivants :
• docReady Se produit juste après l'ouverture du formulaire dans Acrobat ou Adobe Reader® et juste avant que la personne
remplissant le formulaire commence à interagir avec les objets du formulaire. Cet événement est le dernier qui se produit avant que le
contrôle du formulaire ne soit donné à l'utilisateur.
•
enter Se produit lorsque la personne remplissant le formulaire active un champ, un bouton ou un sous-formulaire particulier.
• exit Se produit lorsque la personne remplissant le formulaire active un autre objet à la place d'un champ, d'un bouton ou d'un sousformulaire particulier.
• change Se produit lorsque la personne remplissant le formulaire modifie la valeur d'un champ. Cet événement est plus
communément utilisé avec des listes déroulantes ou des zones de liste pour exécuter un script lorsqu'un utilisateur modifie la valeur actuelle.
• click Se produit lorsque la personne remplissant le formulaire clique sur un champ ou un bouton. Cet événement est plus
communément utilisé avec les boutons pour exécuter un script lorsqu'un utilisateur clique sur un bouton.
LIVECYCLE DESIGNER ES2 23
Création de calculs et de scripts
LiveCycle Designer ES2 Scripting Basics
Pour afficher les événements de script et les scripts
L'éditeur de script offre différents moyens de visualiser des événements de script pour les objets de votre formulaire, selon le type d'objet
que vous sélectionnez et le nombre d'événements que vous avez l'intention d'afficher.
Avant de commencer, assurez-vous que les paramètres suivants sont appliqués :
•
•
Pour afficher l’éditeur de script, choisissez Fenêtre > Editeur de script.
Si la fenêtre de l'éditeur de script n'est pas assez grande pour afficher au moins deux lignes de script à la fois, agrandissez-la en faisant
glisser vers le bas sa bordure inférieure.
Pour afficher un événement de script pour un simple objet dans l'éditeur de script
1
Sélectionnez un objet dans votre formulaire.
2
Dans la zone Afficher, sélectionnez un événement de script valide.
Pour afficher un événement de script pour un objet conteneur et ses enfants dans l'éditeur de script
1
S'il n'est pas déjà en mode multiligne, agrandissez l’éditeur de script afin d'afficher plusieurs lignes de script et assurez-vous que l'option
Afficher les événements pour les objets enfant
est activée.
2
Sélectionnez un objet conteneur, tel qu'un sous-formulaire.
3
Dans la zone Afficher, sélectionnez un événement de script valide.
Les événements sont présentés dans le champ de modification du script de l'éditeur de script, séparés par la syntaxe de référence pour
chaque événement. Certains événements s'appliquent uniquement à des types d'objet spécifiques. Lorsque vous sélectionnez un
événement de script, le champ de modification du script de l'éditeur de script présente seulement les instances valides de l'événement.
Si vous sélectionnez, par exemple, un sous-formulaire contenant une liste déroulante et choisissez l'événement preOpen, l'éditeur de
script affiche une seule entrée représentant la liste déroulante. En effet, l'événement preOpen s'applique exclusivement aux listes
déroulantes. A l'inverse, la sélection de l'événement enter a pour effet d'afficher deux entrées, une pour la liste déroulante et une pour
le sous-formulaire.
Remarque : pour identifier les événements contenant des scripts, la zone Afficher insère un astérisque (*) à la suite du nom de l'événement.
Si un événement contient un script, dès que vous le sélectionnez dans la zone Afficher, la source est indiquée dans le champ de modification
du script de l'éditeur de script.
Pour afficher tous les événements de script pour un simple objet dans l'éditeur de script
1
Sélectionnez un objet dans votre formulaire.
2
Dans la liste Afficher, sélectionnez Tous les événements.
Les événements sont présentés dans le champ de modification du script de l'éditeur de script, séparés par la syntaxe de référence pour
chaque événement.
Pour afficher tous les événements de script pour un objet conteneur et ses enfants dans l'éditeur de script
1
S'il n'est pas déjà en mode multiligne, agrandissez l’éditeur de script afin d'afficher plusieurs lignes de script et assurez-vous que l'option
Afficher les événements pour les objets enfant
est activée.
2
Sélectionnez un objet conteneur, tel qu'un sous-formulaire.
3
Dans la liste Afficher, sélectionnez Tous les événements.
Les événements sont présentés dans le champ de modification du script de l'éditeur de script, séparés par la syntaxe de référence pour
chaque événement.
LIVECYCLE DESIGNER ES2 24
Création de calculs et de scripts
LiveCycle Designer ES2 Scripting Basics
Pour afficher tous les scripts pour un simple objet dans l'éditeur de script
1
Sélectionnez un objet auquel est associé un script.
2
Dans la zone Afficher, sélectionnez Evénements avec scripts.
Les scripts sont présentés dans le champ de modification du script de l'éditeur de script, séparés par la syntaxe de référence pour chaque
événement.
Pour afficher tous les scripts pour un objet conteneur et ses enfants dans l'éditeur de script
1
S'il n'est pas déjà en mode multiligne, agrandissez l’éditeur de script afin d'afficher plusieurs lignes de script et assurez-vous que l'option
Afficher les événements pour les objets enfant
est activée.
2
Sélectionnez un objet conteneur, tel qu'un sous-formulaire. Tous les événements correspondant à l'objet conteneur et ses objets enfant
apparaissent dans l'éditeur de script.
3
Dans la liste Afficher, sélectionnez Tous les événements.
Les scripts sont présentés dans le champ de modification du script de l'éditeur de script, séparés par la syntaxe de référence pour chaque
événement.
Détermination de l'emplacement d'exécution de votre calcul ou script
Pour chaque calcul ou script créé dans Designer ES2, vous devez préciser l'emplacement où le calcul ou le script doit être exécuté.
A moins que vous n'utilisiez un traitement sur serveur tel que Formulaires ES2, assurez-vous que tous vos calculs et scripts sont exécutés
sur l'application cliente (par exemple, sur Acrobat ou un navigateur Web).
Remarque : les calculs et les scripts FormCalc ne sont pas compatibles avec les formulaires générés au format HTML ; ils ne sont pas pris en
compte lors du remplissage de ces formulaires.
Si vous utilisez un traitement sur serveur, vous avez le choix entre exécuter les calculs sur l'application cliente ou sur le serveur. Dans le
deuxième cas, vous choisissez d'exécuter les scripts à un certain point durant le processus de rendu de formulaires.
Si vous choisissez Client et serveur dans la liste Exécuter sur, votre calcul ou script est disponible à la fois pour les applications de type client
et serveur. Cette option peut s'avérer particulièrement utile, par exemple, si vous ne savez pas si vos utilisateurs souhaitent utiliser leurs
formulaires sur des applications client ou serveur. Cette option est également pratique lorsque vous voulez que certains objets de formulaire
se comportent différemment sur les applications client et sur les applications serveur.
Test et débogage des calculs et des scripts
Après avoir créé vos calculs ou scripts et testé votre formulaire, vous pouvez détecter des erreurs de script ou des valeurs de champ
inattendues résultant des erreurs de script.
Designer ES2 propose trois méthodes principales pour tester et déboguer vos calculs et scripts :
•
Utilisation des palettes Espace de travail de Designer ES2. Pour plus de détails, voir « Utilisation de l'espace de travail pour le débogage
des calculs et des scripts » à la page 16.
•
Pour JavaScript uniquement, JavaScript Debugger vous aide à tester vos scripts. Pour plus de détails sur l’utilisation du débogueur, voir
« JavaScript Debugger dans Acrobat Professional » à la page 73.
• Résolution des erreurs de votre formulaire à l'aide des propriétés et méthodes du modèle d'événement et du modèle d'hôte.
Le modèle d'événement et le modèle d'hôte offrent les fonctionnalités nécessaires pour interagir avec l'application hôte ou les différents
événements liés au formulaire. Ces modèles renvoient des informations utiles pour le débogage des calculs et des scripts.
Par exemple, le script suivant renvoie un message au moment de l'exécution, indiquant le nom de l'événement contenant le script. Cela
indique qu'un événement particulier a été déclenché :
xfa.host.messageBox(xfa.event.name) // FormCalc
xfa.host.messageBox(xfa.event.name); // JavaScript
LIVECYCLE DESIGNER ES2 25
Création de calculs et de scripts
LiveCycle Designer ES2 Scripting Basics
Un autre exemple consiste à obtenir la valeur d'un champ d'un formulaire interactif avant que l'utilisateur ne le modifie manuellement. Cela
est utile pour déterminer comment les objets de votre conception de formulaire répondent aux données saisies par l'utilisateur :
xfa.host.messageBox(xfa.event.prevText) // FormCalc
xfa.host.messageBox(xfa.event.prevText); // JavaScript
Pour vérifier la syntaxe des scripts
Lorsque vous travaillez sur une conception de formulaire, vous pouvez vérifier tous les scripts JavaScript ou FormCalc contenant
d'éventuelles erreurs de syntaxe afin de vous assurer que les fonctions de formulaire sont celles prévues avant de le diffuser. Les erreurs de
syntaxe de scripts trouvées dans le formulaire sont affichées sur l'onglet Avertissements de la palette Rapport. Sur l'onglet Avertissements de
la palette Rapport, chaque erreur est répertoriée sur une ligne numérotée distincte avec le nom de l'événement et de l'objet de script ainsi
qu'une description de l'erreur. Si de nombreux événements sont affichés, le numéro de ligne pour chaque événement commence par 1.
Vous pouvez cliquer sur une erreur de script contenue dans la liste pour afficher le script pertinent, mettre en surbrillance la ligne qui
contient l'erreur et rechercher le point d'insertion au début de la ligne mise en surbrillance. Les erreurs de syntaxe de scripts sont également
répertoriées dans l'onglet Avertissements lorsque vous enregistrez une conception de formulaire ou que vous la prévisualisez à l'aide de
l'onglet Aperçu PDF.
Remarque : vous pouvez également utiliser la boîte de dialogue Atteindre la ligne pour sélectionner l'événement que vous souhaitez visualiser.
La liste déroulante d'événements de scripts comprend l'expression SOM (System Object Model), comme indiqué dans les lignes d'en-tête pour
chaque événement actuellement visible dans l'Editeur de script.
❖ Dans l'Editeur de script, choisissez Outils > Vérifiez la syntaxe des scripts.
Utilisation des mesures de protection
Le script qui modifie le modèle sourceSet ou ses enfants rend la certification du formulaire incorrecte et le formulaire ne peut plus être
approuvé. Puisqu'un formulaire peut être certifié à tout moment au cours de son cycle de vie, il est important d'utiliser des techniques de
script qui empêchent l'échec du formulaire après sa certification.
Vous devez travailler avec des clones de ce modèle plutôt qu'avec ce modèle si vous envisagez d'utiliser des scripts qui modifient le modèle
sourceSet ou l'un de ses enfants. Le clonage empêche l'échec du formulaire lorsque les scripts modifient un modèle de données. Par exemple,
les formulaires qui exécutent des tâches communes, telles que l'affichage des enregistrements ou la sélection d'enregistrements spécifiques
dans une base de données, nécessitent la modification des noeuds de connexion des données contenus dans le modèle sourceSet.
Pour cloner le modèle sourceSet, vous devez créer une méthode sur le script qui définit la connexion des données que vous souhaitez
modifier dans le modèle sourceSet et vous assurer que le script continue d'utiliser le clone au lieu de la définition.
Prenez en considération le script suivant dans une liste déroulante de données. Le script remplit la liste à partir d'une source de données.
...
var oDB = xfa.sourceSet.nodes.item(nIndex);
...
// Rechercher un nœud avec le nom de classe "command"
var nDBIndex = 0;
while(oDB.nodes.item(nDBIndex).className != "command")
nDBIndex++;
oDB.nodes.item(nDBIndex).query.recordSet.setAttribute("stayBOF", "bofAction");
oDB.nodes.item(nDBIndex).query.recordSet.setAttribute("stayEOF", "eofAction");
Pour cloner le modèle sourceSet, vous devez modifier la ligne qui a accès à ce dernier en modifiant la méthode de clonage (1) à la fin de
l'instruction :
var oDB = xfa.sourceSet.nodes.item(nIndex).clone(1);
Remarque : vous pouvez stocker le noeud de connexion de données clonées dans une variable ou une variable définie dans un objet de script.
26
4. Evénements
Chaque calcul ou script que vous associez à un objet de formulaire correspond à un événement spécifique. Un événement est défini comme
une occurrence ou une action donnée permettant de modifier l'état d'un formulaire et, lorsque le changement d'état se produit, d'appeler
automatiquement le script ou le calcul associé à l'événement. Les événements se produisent à différents stades, du début de la génération du
formulaire lorsque les données sont fusionnées avec la conception de formulaire et tout au long de la procédure menant au remplissage du
formulaire par l'utilisateur utilisant les objets contenus par le formulaire dans une application client. Grâce à l'application de calculs et de
scripts à des événements spécifiques, vous pouvez contrôler chaque aspect de la présentation des objets du formulaire, ainsi que les données
et la manière dont les objets et les données répondent à l'interaction de l'utilisateur.
Un simple changement d'état ou une action de l'utilisateur peut déclencher plusieurs événements. Il suffit, par exemple, de déplacer le
curseur du champ actif au champ suivant pour déclencher à la fois l'événement exit pour le champ actif et l'événement enter pour le champ
suivant. Si les champs actif et suivant se trouvent dans des sous-formulaires différents, quatre événements au total sont déclenchés : les
événements exit pour le champ actif et le sous-formulaire et les événements enter pour le champ et le sous-formulaire suivants. En général,
chacune des différentes catégories d'événements de formulaire suit un ordre précis.
Types d'événements
Les événements liés au formulaire appartiennent aux catégories suivantes :
Evénements de traitement Ce type d'événement démarre automatiquement suite à un processus interne ou à une action liée aux objets
d'un formulaire. Si, par exemple, l'utilisateur d'un formulaire clique sur un bouton qui permet d'insérer une page dans le formulaire, les
événements de traitement initialize, calculate, validate et layout:ready lancent automatiquement la création de la page.
Evénements interactifs Ce type d'événement est déclenché comme le résultat direct d'actions de l'utilisateur. Si, par exemple, un utilisateur
place le pointeur au-dessus d'un champ d'un formulaire, l'événement mouseEnter est initialisé suite à cette action.
Evénements d'application Ce type d'événement est exécuté comme le résultat des actions qu'une application client ou une application
serveur effectue. Vous pouvez par exemple créer un calcul ou un script destiné à exécuter une tâche juste après l'enregistrement du
formulaire à l'aide de l'événement postPrint.
Evénements de traitement
Les événements de traitement démarrent automatiquement suite à un processus interne ou à une action liée à un formulaire ou aux objets
d'un formulaire. Ces événements sont déclenchés suite à des modifications importantes du formulaire, par exemple après la fusion de la
conception d'un formulaire avec les données ou après le processus de pagination du formulaire. Les événements de traitement sont
déclenchés immédiatement après le démarrage des événements interactifs. Ainsi, tout de suite après le déclenchement d'un événement
interactif, l'événement calculate se produit suivi par l'événement validate.
La liste suivante inclut les événements de traitement disponibles dans la liste Afficher de l'éditeur de script :
•
•
•
•
•
•
calculate
form:ready
indexChange
initialize
layout:ready
validate
LIVECYCLE DESIGNER ES2 27
Evénements
LiveCycle Designer ES2 Scripting Basics
Les événements de traitement peuvent être déclenchés de nombreuses fois en fonction de leurs dépendances, c'est-à-dire des actions
associées à un événement unique lançant par la suite un ou plusieurs événements. Considérons l'exemple d'un utilisateur d'un formulaire
cliquant sur un bouton afin d'afficher une partie jusque-là masquée du formulaire. Dès que l'utilisateur a cliqué sur le bouton, cela déclenche
une série d'événements interactifs et de traitement liés à la seule activation du bouton mais également un certain nombre d'événements de
traitement liés au nouveau sous-formulaire.
L'illustration suivante représente l'enchaînement général des événements aboutissant à l'ouverture d'un formulaire PDF dans Acrobat ou
dans Adobe Reader.
Lorsque le formulaire est ouvert dans Acrobat ou Adobe Reader, ces événements de traitement peuvent encore être déclenchés à la suite des
modifications apportées au formulaire. Par exemple, les événements calculate, validate et layout:ready associés à un objet se
produisent immédiatement après le déclenchement de certains événements interactifs. Par conséquent, les calculs et les scripts liés à ces
événements de traitement seront exécutés à plusieurs reprises.
Evénements interactifs
Les événements interactifs sont le résultat direct des actions de l'utilisateur du formulaire ce qui rend ces événements particulièrement utiles
pour un grand nombre de calculs et d'opérations liés aux scripts. Par exemple, vous pouvez ajouter un script à l'événement mouseEnter de
sorte que la couleur de bordure d'un champ de texte vire au bleu et un script à l'événement mouseExit pour que la bordure revienne à sa
couleur initiale. Cette action crée un effet de mise en surbrillance lorsque l'utilisateur place le pointeur au-dessus du champ lui procurant
ainsi une aide visuelle pour le remplissage du formulaire. Les événements interactifs sont également utiles pour la modification des données
du formulaire suite à une sélection de l'utilisateur. Ainsi, vous pouvez ajouter un script à l'événement change pour une liste déroulante
mettant à jour les valeurs des données dans plusieurs champs en fonction de la valeur que l'utilisateur a choisie dans la liste déroulante.
LIVECYCLE DESIGNER ES2 28
Evénements
LiveCycle Designer ES2 Scripting Basics
La liste suivante inclut les événements interactifs disponibles dans la liste Afficher de l'éditeur de script :
•
•
•
•
•
•
•
•
•
•
•
•
change
click
enter
exit
mouseDown
mouseEnter
mouseExit
mouseUp
postOpen
postSign
preOpen
preSign
L'illustration suivante représente l'enchaînement général des événements lorsqu'un utilisateur sélectionne un objet et modifie sa valeur à
l'aide de la souris.
Remarque : alors que cette image produit un enchaînement général des événements, certaines actions utilisateur et objets de formulaire peuvent
provoquer un ordre d'événement différent. Par exemple, si un utilisateur sélectionne une valeur dans une liste déroulante, l'événement
mouseExit se produit après l'événement click mais avant les événements change ou full. De la même manière, si un utilisateur sélectionne
un champ, appuie sur le bouton de la souris et quitte le champ tout en maintenant le bouton de la souris enfoncé, l'événement mouseUp se
produira dans un ordre différent de celui décrit dans cette image.
LIVECYCLE DESIGNER ES2 29
Evénements
LiveCycle Designer ES2 Scripting Basics
L'illustration suivante représente l'enchaînement général des événements lorsqu'un utilisateur sélectionne un objet et modifie sa valeur à
l'aide du clavier.
Evénements d'application
Les événements d'application sont le résultat des actions qu'une application cliente ou une application serveur effectue, soit en réponse à une
action de l'utilisateur, soit suite à un processus automatisé. Les événements d'application ne font pas partie de l'enchaînement général des
événements. Il s'agit d'événements uniques correspondant aux actions que l'application cliente ou serveur réalise.
La liste suivante inclut les événements d'application disponibles dans la liste Afficher de l'éditeur de script :
•
•
•
•
•
•
•
•
docClose
docReady
postPrint
postSave
postSubmit
prePrint
preSave
preSubmit
LIVECYCLE DESIGNER ES2 30
Evénements
LiveCycle Designer ES2 Scripting Basics
L'illustration suivante représente l'enchaînement général des événements pour l'evénément preSave.
Si un utilisateur enregistre le formulaire dans Acrobat ou dans Adobe Reader, l'événement preSave est immédiatement déclenché avant
l'opération d'enregistrement ; il est suivi, dans l'ordre, par les événements calculate, validate et layout:ready associés à tous les objets
du formulaire. La même séquence d'événements démarre si le formulaire contient un script enregistrant le formulaire par programme.
Une série similaire d'événements se produit pour chacun des autres événements d'application répertoriés ci-dessus.
Evénement calculate
Description
Déclenché dans les conditions suivantes :
•
•
Au moment de la fusion de votre conception de formulaire et des données en un formulaire finalisé.
Lorsqu'une modification est apportée à une valeur dont dépend le calcul, telle la valeur d'un champ spécifique, à moins que l'utilisateur
ait corrigé manuellement la valeur calculée. L'objet affiche alors la valeur de retour de l'événement. Les propriétés des champs remplacés
manuellement se trouvent dans le panneau Valeur de la palette Objet.
• Lorsque le champ n'est plus actif. Par exemple, dès qu'un utilisateur clique ou utilise la touche de tabulation pour quitter un champ.
Lorsque vous faites appel à l'événement calculate pour effectuer des calculs ou exécuter des scripts, prenez en compte les problèmes
potentiels suivants :
•
Les calculs et les scripts associés à l'événement calculate ne doivent pas modifier la structure du formulaire, excepté en ce qui concerne
les valeurs des données et de champs du formulaire.
•
Le contenu inséré par l'événement calculate doit se conformer aux validations associées à l'objet ; sinon des erreurs de validation se
produiront.
•
Les calculs et les scripts ne doivent pas inclure une boucle infinie, car cela entraînerait la mise à jour permanente de la valeur par le
formulaire. Par exemple, un script qui incrémente la valeur d'un champ dans le cadre d'une expression en boucle comme une boucle
while ou for peut générer une boucle infinie.
•
La dernière expression évaluée dans l'événement calculate est utilisée pour remplir la valeur de l'objet de formulaire actif. Par exemple,
si le script de l'événement calculate définit tout d'abord la valeur du champ actif sur 500, puis celle d'un champ suivant sur 1 000, les
deux champs afficheront la valeur 1 000 au moment de l'exécution. Par conséquent, limitez l'ajout de scripts à l'événement calculate
uniquement aux événenements qui portent spécifiquement sur la définition de la valeur du champ actif.
LIVECYCLE DESIGNER ES2 31
Evénements
LiveCycle Designer ES2 Scripting Basics
Type
Evénement de traitement
Prise en charge
Application client
Disponibilité
Acrobat and Adobe Reader
oui
Navigateur HTML
oui
Version
XFA 2.1
Exemple
Servez-vous de l'événement calculate pour mettre à jour les valeurs numériques des champs, car cet événement démarre immédiatement
après la plupart des autres événements. Ainsi, sur un formulaire de bon de commande, vous pouvez utiliser l'événement calculate pour
un champ afin de déterminer le pourcentage de la taxe sur les ventes d'après le total de la commande. Le calcul s'effectue chaque fois qu'une
modification est apportée aux valeurs des champs du formulaire. Ceci garantit que le montant de la taxe affichée est toujours correct.
Cependant, étant donné que l'événement calculate peut être exécuté à plusieurs reprises, vous devez vous assurer que le calcul ou le script
que vous associez à l'événement ne provoquera pas une incrémentation inutile des valeurs de données. Si, par exemple, le calcul de la taxe
sur les ventes additionne la valeur de la taxe au montant total à chaque exécution de l'événement calculate, le total obtenu sur le formulaire
risque d'être trop élevé.
Pour obtenir des exemples détaillés d'utilisation de l'événement calculate, voir « Calcul des sommes d'un champ » à la page 104.
Evénement change
Description
Déclenché lorsqu'un utilisateur modifie le contenu d'un champ par l'exécution de l'une des actions suivantes :
• il effectue une saisie au clavier lorsque le champ est contrôlé par la cible d'action du clavier ;
• il colle des données dans le champ ;
• il effectue une sélection à partir d'une zone de liste ou d'une liste déroulante ;
• il active ou désactive une case à cocher ;
• il change le paramètre d'un groupe de boutons radio.
Cet événement ne se déclenche pas lorsque les valeurs des objets sont modifiées suite à l'application de calculs ou de scripts ou encore à
l'issue de la fusion de la conception du formulaire avec les données.
Type
Evénement interactif
Prise en charge
Application client
Disponibilité
Acrobat and Adobe Reader
oui
Navigateur HTML
oui
(seulement pour les listes déroulantes)
LIVECYCLE DESIGNER ES2 32
Evénements
LiveCycle Designer ES2 Scripting Basics
Version
XFA 2.1
Exemple
Servez-vous de cet événement pour tout calcul ou tout script qui doit se déclencher en réponse à la modification de la valeur d'un champ
par un utilisateur du formulaire. Vous pouvez ainsi utiliser l'événement change pour une liste déroulante afin de mettre en surbrillance
certaines rangées du tableau. Cette technique permet, chaque fois que l'utilisateur sélectionne une valeur dans la liste déroulante, d'afficher
en surbrillance la rangée correspondante du tableau.
Remarque : effectuer un script par rapport à un 'this.rawValue' d'un objet ne fonctionne pas. Utilisez plutôt la propriété du modèle
d'événement $event.fullText afin d'obtenir la valeur actuelle de l'objet.
Pour obtenir des exemples détaillés d'utilisation de l'événement change, voir « Obtention de la valeur actuelle ou de la valeur précédente
d'une liste déroulante » à la page 102.
Evénement click
Description
Cet événement se déclenche par un clic de souris dans la région. Si un événement click se produit pour un champ de texte ou un champ
numérique, les calculs ou les scripts sont automatiquement exécutés. Cependant, la valeur du champ ne change pas suite aux calculs et aux
scripts tant que le champ n'est pas désélectionné.
Remarque : vous ne pouvez pas placer un calcul ou un script sur l'événement click d'un bouton Envoyer, car le calcul ou le script prévaudrait
sur l'action de soumission. En revanche, placez le calcul ou le script sur l'événement preSubmit associé au bouton Envoyer.
Pour plus de détails sur les actions d'envoi de formulaires, voir Designer ES2.
Type
Evénement interactif
Prise en charge
Application client
Disponibilité
Acrobat and Adobe Reader
oui
Navigateur HTML
oui
Version
XFA 2.1
Exemple
Utilisez cet événement pour déclencher une action en réponse immédiate à l'action d'un utilisateur consistant à cliquer sur un bouton, à
sélectionner un bouton radio ou encore à activer une case à cocher du formulaire. Vous pouvez, par exemple, associer l'événement click à
une case à cocher afin d'afficher ou de masquer un champ du formulaire.
Pour obtenir des exemples détaillés d'utilisation de l'événement click, voir « Modification des propriétés visuelles d'un objet sur le client »
à la page 99.
LIVECYCLE DESIGNER ES2 33
Evénements
LiveCycle Designer ES2 Scripting Basics
Evénement docClose
Description
Cet événement est exécuté à chaque fin de formulaire, seulement si toutes les validations de formulaire se sont terminées sans erreur.
Type
Evénement d'application
Prise en charge
Application client
Disponibilité
Acrobat and Adobe Reader
oui
Navigateur HTML
non
Version
XFA 2.1
Exemple
Lorsque cet événement se déclenche, vous ne pouvez plus modifier un formulaire enregistré. En effet, il vise à donner la possibilité de générer
un état quitter ou un message indiquant que le remplissage du formulaire est achevé. Par exemple, ayez recours à l'événement docClose
pour afficher un message à l'utilisateur lui indiquant que le formulaire est dûment rempli.
Evénement docReady
Description
Se déclenche immédiatement après l'ouverture du formulaire dans Acrobat ou dans Adobe Reader.
Type
Evénement d'application
Prise en charge
Application client
Disponibilité
Acrobat and Adobe Reader
oui
Navigateur HTML
non
Version
XFA 2.1
Exemple
Cet événement est le premier qui s'exécute à l'ouverture du formulaire dans Acrobat ou Adobe Reader. Toute tâche de calcul ou de script
impliquant le remplissage du formulaire ou ne devant être exécutée qu'une fois à la première ouverture du formulaire doit faire appel à cet
événement. Par exemple, faites appel à l'événement docReady pour vérifier la version d'Acrobat ou d'Adobe Reader et renvoyer un message
à l'utilisateur dans le cas où il est tenu de mettre à niveau son application avant de compléter le formulaire.
LIVECYCLE DESIGNER ES2 34
Evénements
LiveCycle Designer ES2 Scripting Basics
Evénement enter
Description
Cet événement se déclenche lorsqu'un champ ou un sous-formulaire atteint la cible d'action du clavier, que ce soit provoqué par une action
utilisateur (déplacement du curseur dans le champ ou clic dans le champ) ou par un script qui définit la cible d'action par programme.
Type
Evénement interactif
Prise en charge
Application client
Disponibilité
Acrobat and Adobe Reader
oui
Navigateur HTML
oui
Version
XFA 2.1
Exemple
Vous pouvez recourir à cet événement pour fournir un texte d'info-bulle ou tout autre message à l'utilisateur du formulaire lorsque ce dernier
place le pointeur dans le champ actif ou le sous-formulaire. Si, par exemple, un champ requiert une valeur dans un format donné ou si le
remplissage d'un champ est régi par des instructions spéciales, cet événement permet d'afficher un message spécifiant les consignes
particulières que doit respecter l'utilisateur.
Pour obtenir des exemples détaillés d'utilisation de l'événement enter, voir « Mise en surbrillance des champs en réponse aux interactions
de l'utilisateur final » à la page 105.
Evénement exit
Description
Cet événement se déclenche lorsqu'un champ ou un sous-formulaire n'est plus contrôlé par la cible d'action du clavier, en raison d'une action
utilisateur (déplacement du curseur dans un autre champ ou clic hors du champ) ou de l'exécution d'un script qui supprime la cible.
Remarque : si votre script vise à manipuler la valeur du champ actif, il est préconisé de l'associer à l'événement calculate.
Type
Evénement interactif
Prise en charge
Application client
Disponibilité
Acrobat and Adobe Reader
oui
Navigateur HTML
oui
Version
XFA 2.1
LIVECYCLE DESIGNER ES2 35
Evénements
LiveCycle Designer ES2 Scripting Basics
Exemple
Appliquez cet événement pour exécuter la vérification de données de champ lorsqu'un utilisateur quitte un champ. Si, par exemple, un
champ exige une valeur, utilisez cet événement pour afficher un message à l'utilisateur afin de lui signaler que le remplissage de ce champ
conditionne la soumission du formulaire.
Pour obtenir des exemples détaillés d'utilisation de l'événement exit, voir « Mise en surbrillance des champs en réponse aux interactions
de l'utilisateur final » à la page 105.
Evénement form:ready
Description
Cet événement se déclenche lorsque la fusion de votre conception de formulaire et des données est terminée, que le formulaire terminé existe
et que les événements initialize, calculate et validate sont terminés.
Remarque : l'événement form:ready s'applique uniquement aux objets Vue de conception, mais pas aux objets Gabarit (voir « Evénements de
traitement » à la page 26).
Type
Evénement de traitement
Prise en charge
Application client
Disponibilité
Acrobat and Adobe Reader
oui
Navigateur HTML
non
Version
XFA 2.1
Exemple
Pensez à faire appel à cet événement pour effectuer des tâches après la fusion de la conception de formulaire et des données et avant
l'application de la disposition. Cet événement est utile, par exemple, pour personnaliser l'ordre ou l'emplacement des sous-formulaires sur
votre formulaire avant que le formulaire soit paginé et rendu.
Evénement full
Description
Cet événement se déclenche lorsque l'utilisateur tente d'entrer le contenu maximum autorisé dans un champ. Si, par exemple, la propriété
Limiter la taille d'un champ est définie sur 5 et si un utilisateur tente de saisir la chaîne abcdef, l'événement full s'exécute lorsque
l'utilisateur tape la lettre f.
Remarque : la propriété Limiter la taille d'un champ se trouve dans le panneau Champ de la palette Objet.
Type
Evénement interactif
LIVECYCLE DESIGNER ES2 36
Evénements
LiveCycle Designer ES2 Scripting Basics
Prise en charge
Application client
Disponibilité
Acrobat and Adobe Reader
oui
Navigateur HTML
non
Version
XFA 2.1
Exemple
Grâce à cet événement, il est possible d'indiquer à l'utilisateur qu'un champ a atteint sa capacité maximale. Par exemple, vous pouvez générer
un message indiquant à l'utilisateur que la longueur maximale du champ est atteinte et lui indiquer les étapes supplémentaires en vue de
remédier à ce problème.
Evénement indexChange
Description
L'événement est exécuté suite à l'insertion, au déplacement ou à la sa suppression d'un sous-formulaire, que ce soit par la fusion de nouvelles
données avec le formulaire ou par l'utilisation d'un script.
N'oubliez pas que l'événement indexChange ne se déclenche pas lors de la suppression de la dernière ligne d'un tableau.
Remarque : cet événement n'est reçu que par les instances de sous-formulaire contrôlées par le gestionnaire d'instances ; il n'est pas pris en
compte dans le cadre de jeux de sous-formulaires.
Type
Evénement de traitement
Prise en charge
Application client
Disponibilité
Acrobat and Adobe Reader
oui
Navigateur HTML
non
Version
XFA 2.5
Exemple
Cet événement s'avère particulièrement utile pour définir des propriétés basées sur la valeur de l'occurrence d'un objet donné. Ainsi, vous
pouvez utiliser cet événement pour coordonner l'ombrage de rangées alternées dans un tableau.
Evénement initialize
Description
L'événement s'applique à tous les objets dès la fusion de la conception du formulaire avec les données.
Type
Evénement de traitement
LIVECYCLE DESIGNER ES2 37
Evénements
LiveCycle Designer ES2 Scripting Basics
Prise en charge
Application client
Disponibilité
Acrobat and Adobe Reader
oui
Navigateur HTML
oui
Version
XFA 2.1
Exemple
Vous pouvez utiliser cet événement pour réaliser des actions lorsqu'un objet est crée en raison d'une action de l'utilisateur ou au cours du
processus de création du formulaire. Utilisez cet événement, par exemple, pour contrôler les paramètres des nouvelles instances d'un objet
de sous-formulaire qu'un utilisateur ajoute au formulaire en cliquant sur un bouton.
Evénement layout:ready
Description
Cet événement s'exécute après la fusion de la conception du formulaire et des donnée, le formulaire existe et la disposition est appliquée. A
ce stade, le rendu du formulaire finalisé n'a pas été effectué. Un calcul ou un script exécuté sur cet événement peut donc modifier la
disposition du formulaire avant sa génération. Cet événement peut également se produire après la restitution du formulaire si un calcul ou
un script rectifie les données ou entraîne une modification du formulaire dans Acrobat ou Adobe Reader.
Remarque : les scripts qui déclenchent l'événement layout:ready ne devraient en principe pas modifier la disposition de la forme. Cela comprend
par exemple tout élément impliquant des sous-formulaires ou des tableaux pouvant être élargis ou rétrécis, ajoutant dynamiquement des
fragments au moment de l'exécution, ajoutant ou supprimant des instances de sous-formulaires et faisant basculer le paramètre de visibilité de
masqué à visible.
Remarque : les champs des formulaires interactifs qui contiennent l'événement layout:ready sont pris en charge dans Acrobat 7.0.5 et versions
ultérieures.
Type
Evénement de traitement
Prise en charge
Application client
Disponibilité
Acrobat and Adobe Reader
oui
Navigateur HTML
non
Version
XFA 2.1
Exemple
Vous pouvez utiliser cet événement pour réaliser des tâches immédiatement après l'application de la disposition. Par exemple, cet événement
vous permet de déterminer le nombre de pages que le formulaire contient.
LIVECYCLE DESIGNER ES2 38
Evénements
LiveCycle Designer ES2 Scripting Basics
Evénement mouseDown
Description
L'événement survient lorsque l'utilisateur appuie sur le bouton de la souris alors que le pointeur se trouve dans le champ.
Remarque : si un événement mouseDown se produit pour un champ de texte ou un champ numérique, les calculs ou les scripts sont
automatiquement exécutés. Cependant, la valeur du champ ne change pas suite aux calculs et aux scripts tant que le champ n'est pas
désélectionné. Lorsqu'un événement mouseDown intervient dans un champ de signature, l'événement se déclenche avant le début du processus
de signature.
Type
Evénement interactif
Prise en charge
Application client
Disponibilité
Acrobat and Adobe Reader
oui
Navigateur HTML
oui
Version
XFA 2.1
Exemple
Vous pouvez faire appel à cet événement pour déclencher une action en réponse immédiate à l'action d'un utilisateur consistant à cliquer
sur un bouton, à sélectionner un bouton radio ou encore à activer une case à cocher du formulaire. Vous pouvez, par exemple, associer
l'événement mouseDown à une case à cocher afin d'afficher ou de masquer un champ du formulaire. Cet événement est similaire, du point
de vue de la conception, à l'événement click et est utilisé dans le même but.
Evénement mouseEnter
Description
Cet événement se déclenche lorsque l'utilisateur déplace le pointeur de la souris à l'intérieur du champ, sans nécessairement appuyer sur le
bouton de la souris. Il n'est pas déclenché si le pointeur de la souris est placé dans le champ pour une toute autre raison, par exemple parce
qu'une fenêtre superposée se ferme.
Type
Evénement interactif
Prise en charge
Application client
Disponibilité
Acrobat and Adobe Reader
oui
Navigateur HTML
non
Version
XFA 2.1
LIVECYCLE DESIGNER ES2 39
Evénements
LiveCycle Designer ES2 Scripting Basics
Exemple
Vous pouvez utiliser cet événement pour procurer un retour d'informations visuel à un utilisateur pour l'événement mouseExit. Cet
événement permet de modifier la couleur de la bordure ou la couleur d'arrière-plan d'un objet afin de signaler de manière visuelle à
l'utilisateur qu'il utilise un champ donné.
Pour obtenir des exemples détaillés d'utilisation de l'événement mouseEnter, voir « Mise en surbrillance des champs en réponse aux
interactions de l'utilisateur final » à la page 105.
Evénement mouseExit
Description
Cet événement se déclenche lorsque l'utilisateur déplace le pointeur de la souris hors du champ, même si l'utilisateur appuie sur le bouton
de la souris. Il n'est pas déclenché si le pointeur de la souris est placé dans le champ pour une toute autre raison, par exemple parce qu'une
fenêtre superposée s'ouvre.
Type
Evénement interactif
Prise en charge
Application client
Disponibilité
Acrobat and Adobe Reader
oui
Navigateur HTML
non
Version
XFA 2.1
Exemple
Vous pouvez utiliser cet événement pour procurer un retour d'informations visuel à un utilisateur pour l'événement mouseEnter. Cet
événement permet de rétablir la couleur d'origine de la bordure ou d'arrière-plan d'un objet afin de signaler de manière visuelle à l'utilisateur
qu'il ne travaille plus dans un champ donné.
Pour obtenir des exemples détaillés d'utilisation de l'événement mouseExit, voir « Mise en surbrillance des champs en réponse aux
interactions de l'utilisateur final » à la page 105.
Evénement mouseUp
Description
L'événement se produit lorsque l'utilisateur relâche le bouton de la souris alors que le pointeur se trouve dans le champ.
Remarque : si un événement mouseUp se produit pour un champ de texte ou un champ numérique, les calculs ou les scripts sont
automatiquement exécutés. Cependant, la valeur du champ ne change pas suite aux calculs et aux scripts tant que le champ n'est pas
désélectionné.
Type
Evénement interactif
LIVECYCLE DESIGNER ES2 40
Evénements
LiveCycle Designer ES2 Scripting Basics
Prise en charge
Application client
Disponibilité
Acrobat and Adobe Reader
oui
Navigateur HTML
oui
Version
XFA 2.1
Exemple
Vous pouvez faire appel à cet événement pour déclencher des actions afin de répondre immédiatement à l'action d'un utilisateur consistant
à cliquer sur un bouton, à sélectionner un bouton radio ou encore à activer une case à cocher du formulaire. Vous pouvez, par exemple,
associer l'événement mouseUp à une case à cocher afin d'afficher ou de masquer un champ du formulaire. Cet événement est similaire, du
point de vue de la conception, à l'événement click et est utilisé dans le même but.
Evénement postOpen
Description
Cet événement est exécuté dès qu'un utilisateur effectue une action ayant pour effet d'afficher les données d'une liste déroulante, notamment
cliquer sur la flèche de la liste déroulante ou activer la liste déroulante avec la touche Tabulation et utiliser la flèche Bas. Cet événement se
produit après l'affichage du contenu de la liste déroulante.
Remarque : cet événement s'applique uniquement à l'objet de liste déroulante.
Type
Evénement interactif
Prise en charge
Application client
Disponibilité
Acrobat and Adobe Reader
oui
Navigateur HTML
non
Version
XFA 2.8
Exemple
Vous pouvez utiliser cet événement pour traiter les erreurs ou les résultats inattendus liés au traitement de l'ouverture de la liste déroulante.
Si, l'événement preOpen est diffusé, par exemple, grâce à un script et non à l'interaction de l'utilisateur ou si l'ouverture des données de la
liste déroulante n'est pas possible en raison d'une erreur, l'événement postOpen est diffusé malgré tout pour permettre l'exécution des scripts
de gestion des erreurs.
LIVECYCLE DESIGNER ES2 41
Evénements
LiveCycle Designer ES2 Scripting Basics
Evénement postPrint
Description
Cet événement est automatiquement exécuté une fois que le formulaire rendu est envoyé à l'imprimante, au programme d'impression
différée ou à la destination de sortie.
Type
Evénement d'application
Prise en charge
Application client
Disponibilité
Acrobat and Adobe Reader
oui
Navigateur HTML
non
Version
XFA 2.1
Exemple
Utilisez cet événement pour afficher des messages d'information à l'intention de l'utilisateur lorsque le formulaire est imprimé. Ainsi, il est
possible de créer un script sur l'événement postPrint pour rappeler à l'utilisateur les étapes qu'il doit encore entreprendre pour envoyer
manuellement le formulaire.
Evénement postSave
Description
Cet événement s'exécute automatiquement lorsqu'un utilisateur enregistre un formulaire au format PDF ou XDP. Il ne se produit pas si vous
exportez un sous-ensemble du formulaire (par exemple, uniquement les données de formulaire) au format XDP.
Type
Evénement d'application
Prise en charge
Application client
Disponibilité
Acrobat and Adobe Reader
oui
Navigateur HTML
non
Version
XFA 2.1
Exemple
Utilisez cet événement pour afficher des messages d'information à l'intention de l'utilisateur lorsque les données du formulaire sont
enregistrées. Créez ainsi un script sur l'événement postSave pour rappeler aux utilisateurs le temps qu'il leur reste pour remplir et envoyer
le formulaire.
LIVECYCLE DESIGNER ES2 42
Evénements
LiveCycle Designer ES2 Scripting Basics
Evénement postSign
Description
Cet événement est exécuté dès qu'un utilisateur effectue une action ayant pour effet d'appliquer une signature numérique au formulaire.
Remarque : cet événement s'applique uniquement à l'objet Champ de signature.
Type
Evénement interactif
Prise en charge
Application client
Disponibilité
Acrobat and Adobe Reader
oui
Navigateur HTML
non
Version
XFA 2.8
Exemple
Vous pouvez utiliser cet événement pour faire connaître à l'utilisateur les restrictions imposées depuis que le formulaire a été signé
numériquement.
Evénement postSubmit
Description
Se déclenche dès qu'un formulaire transmet des données à l'hôte via le protocole HTTP.
Remarque : cet événement ne fait pas la distinction entre les soumissions initiées par l'activation de différents boutons ou par différents URL.
Tout script devant faire cette distinction doit inclure un script lui permettant de déterminer le bouton ayant été activé. En général, postSubmit
est analogue à postSave et est utilisé dans le même but.
Type
Evénement d'application
Prise en charge
Application client
Disponibilité
Acrobat and Adobe Reader
oui
Navigateur HTML
oui
(Pour les boutons d'envoi
uniquement)
Version
XFA 2.8
Exemple
Vous pouvez utiliser cet événement pour réaliser des actions immédiatement après l'envoi des données du formulaire. Vous pourriez, par
exemple, créer un script pour l'événement postSubmit afin de confirmer que l'envoi a réussi.
LIVECYCLE DESIGNER ES2 43
Evénements
LiveCycle Designer ES2 Scripting Basics
Evénement preOpen
Description
Cet événement est exécuté lorsqu'un utilisateur effectue une action ayant pour effet d'afficher la liste déroulante, notamment cliquer sur la
flèche de la liste déroulante ou activer la liste déroulante avec la touche Tabulation et utiliser la flèche Bas. Cet événement se produit avant
l'affichage du contenu de la liste déroulante.
Remarque : cet événement s'applique uniquement à l'objet de liste déroulante.
Type
Evénement interactif
Prise en charge
Application client
Disponibilité
Acrobat and Adobe Reader
oui
Navigateur HTML
non
Version
XFA 2.4
Exemple
Cet événement permet de contrôler le chargement d'un grand nombre d'articles de liste. Par exemple, vous pouvez utiliser cet événement
pour charger un nombre fixe d'enregistrements provenant d'une source de données dans une liste déroulante. Cette opération contribue à
améliorer les performances du formulaire au moment de son exécution par l'utilisateur.
Evénement prePrint
Description
Cet événement est automatiquement exécuté avant qu'un formulaire ne soit rendu à des fins d'impression. Vous ne pouvez pas annuler
l'impression au cours de cet événement.
Attention : évitez d'utiliser cet événement pour masquer ou afficher des objets de formulaire. Par exemple, si un utilisateur a déjà signé
numériquement le formulaire, l'utilisation de cet événement pour masquer tous les objets de bouton avant l'impression aura une influence sur
l'état de la signature.
Type
Evénement d'application
Prise en charge
Application client
Disponibilité
Acrobat and Adobe Reader
oui
Navigateur HTML
oui
Version
XFA 2.1
LIVECYCLE DESIGNER ES2 44
Evénements
LiveCycle Designer ES2 Scripting Basics
Exemple
Cet événement permet de masquer un objet que vous ne souhaitez pas imprimer. Ainsi, il est possible de masquer un texte ou des
instructions destinés à l'utilisateur lorsqu'il remplit le formulaire en ligne.
Evénement preSave
Description
Se produit automatiquement avant l'enregistrement des données du formulaire au format PDF ou XDP. Ce événement n'est pas exécuté si
les données ou tout autre sous-ensemble du formulaire sont exportés au format XDP.
Type
Evénement d'application
Prise en charge
Application client
Disponibilité
Acrobat and Adobe Reader
oui
Navigateur HTML
oui
Version
XFA 2.1
Exemple
Grâce à cet événement, vous pouvez modifier les données du formulaire juste avant l'enregistrement des données. Par exemple, il est possible
de créer un script sur l'événement preSave afin d'analyser les données et d'afficher un message de rappel à l'utilisateur si certains champs
obligatoires sont vides.
Evénement preSign
Description
Cet événement est exécuté avant qu'un utilisateur effectue une action ayant pour effet d'appliquer une signature numérique au formulaire.
Remarque : cet événement s'applique uniquement à l'objet Champ de signature.
Type
Evénement interactif
Prise en charge
Application client
Disponibilité
Acrobat and Adobe Reader
oui
Navigateur HTML
non
Version
XFA 2.8
Exemple
Vous pouvez utiliser cet événement pour valider les données concernées par la signature numérique ou pour fournir des informations à un
utilisateur avant qu'il applique la signature numérique.
LIVECYCLE DESIGNER ES2 45
Evénements
LiveCycle Designer ES2 Scripting Basics
Evénement preSubmit
Description
Se déclenche dès qu'un formulaire transmet des données à l'hôte via le protocole HTTP. A ce stade, les données sont organisées dans un
ensemble de données, mais n'ont pas encore été envoyées à l'hôte. Les calculs et les scripts associés à l'événement peuvent examiner et
corriger les données avant la soumission du formulaire. Si le calcul ou le script est défini de manière à être exécuté sur le serveur, le
formulaire envoie les données au serveur en lui indiquant d'exécuter le calcul ou le script avant tout traitement supplémentaire.
Remarque : l'événement preSubmit ne fait pas la distinction entre les soumissions initiées par l'activation de différents boutons ou par différents
URL. Tout script devant faire cette distinction doit inclure un code lui permettant de déterminer le bouton ayant été activé. En général,
preSubmit est analogue à preSave et est utilisé dans le même but.
Type
Evénement d'application
Prise en charge
Application client
Disponibilité
Acrobat and Adobe Reader
oui
Navigateur HTML
oui
(Pour les boutons d'envoi uniquement)
Version
XFA 2.1
Exemple
Grâce à cet événement, vous pouvez modifier les données du formulaire juste avant la soumission des données. Vous avez la possibilité, par
exemple, de générer un script sur l'événement preSubmit consistant à analyser la quantité de données et à afficher par la suite un message
à l'utilisateur l'informant du temps nécessaire à l'envoi des données.
Evénement validate
Description
S'exécute lorsque la conception de formulaire et les données sont fusionnées pour créer le formulaire et lorsqu'un champ est désélectionné ;
par exemple, lorsqu'un utilisateur clique ou utilise la touche Tabulation pour quitter un champ. Cet événement se produit à nouveau chaque
fois que la valeur d'un champ change. Les calculs et les scripts placés sur l'événement validate offrent des méthodes de validation plus
spécifiques que celles disponibles dans le panneau Valeur de la palette Objet.
Les calculs et les scripts associés à l'événement validate sont nécessaires pour le renvoi des valeurs true ou false (exprimées selon le
format approprié du script) correspondant à une validation correcte ou à un échec de la validation et ne doivent pas influer sur la structure
globale des valeurs du formulaire. De plus, ils ne doivent pas tenter de retourner des informations à un utilisateur de formulaire, puisque cet
utilisateur n'utilise pas forcément le formulaire sur une application client telle qu'Acrobat.
Remarque : etant donné que les validations portent sur le contenu d'un formulaire, elles ne peuvent pas être utilisées pour vérifier la mise en
forme déterminée par les formats des champs.
Type
Evénement de traitement
LIVECYCLE DESIGNER ES2 46
Evénements
LiveCycle Designer ES2 Scripting Basics
Prise en charge
Application client
Disponibilité
Acrobat and Adobe Reader
oui
Navigateur HTML
oui
Version
XFA 2.1
Exemple
Vous pouvez utiliser cet événement pour vérifier les valeurs des objets, tout particulièrement lorsque les données doivent respecter des règles
spécifiques. Par exemple, vous pouvez créer un script sur l'événement validate afin de vous assurer que le champ indiquant le montant
total sur un formulaire de bon de commande ne contient pas une valeur négative.
Pour obtenir des exemples détaillés d'utilisation de l'événement validate, voir « Définition d'une valeur de champ obligatoire au moment
de l'exécution » à la page 104.
47
5. Rédiger un script avec FormCalc et JavaScript
Bien que FormCalc et JavaScript s'adressent à deux types d'utilisateur différents, il existe certaines similitudes entre les types de fonctions
intégrées respectivement proposés. Le tableau suivant fournit une liste des fonctions FormCalc disponibles et indique s'il existe une fonction
JavaScript comparable.
Pour plus de détails sur les fonctions FormCalc et leur paramètres, voir « Syntaxe de fonction intégrée » à la page 51.
Fonction FormCalc
Description
Méthode JavaScript équivalente
Abs(n1)
Renvoie la valeur absolue d’une valeur ou d’une expression
numérique.
Math.abs(n1)
Apr(n1, n2, n3)
Renvoie le taux annuel d’un prêt.
Aucune
At(s1, s2)
Repère la position du premier caractère d’une chaîne dans
une autre chaîne.
String.search(s1)
Avg(n1 [, n2... ] )
Evalue un ensemble de valeurs et/ou d’expressions
numériques et renvoie la moyenne des éléments non nuls de
cet ensemble.
Aucun
Ceil(n1)
Renvoie le nombre entier supérieur ou égal au nombre fourni.
Math.ceil(n1)
Choose(n1, s1 [, s2... ] )
Sélectionne une valeur dans un ensemble de paramètres
donné.
Aucun
Concat(s1 [, s2... ] )
Renvoie la concaténation des chaînes indiquées.
String.concat(s1, s2 [, s3 ... ])
Count(n1 [, n2...])
Evalue un ensemble de valeurs et/ou d'expressions et renvoie
le nombre d'éléments non nuls contenus dans cet ensemble.
Aucun
CTerm(n1, n2, n3)
Renvoie le nombre de périodes nécessaires pour qu’un
investissement, dont le taux d’intérêt est fixe mais composé,
atteigne une valeur capitalisée.
Aucun
Date()
Renvoie la date active du système représentée sous forme du
nombre de jours écoulés depuis la date considérée.
Date.getDate()
Date2Num(d1 [, f1 [, k1 ] ] )
Renvoie le nombre de jours écoulés depuis la date
considérée, à partir d'une chaîne de date.
L'objet Date JavaScript ne se sert pas de
l'époque comme point de référence.
DateFmt([ n1 [, k1 ] ] )
Renvoie une chaîne de format de date, à partir d'un style de
format de date.
Aucun
Decode(s1 [, s2 ] )
Renvoie la version décodée d'une chaîne donnée.
Prise en charge limitée
L'objet Date JavaScript ne se sert pas de
l'époque comme point de référence.
JavaScript reconnaît uniquement les valeurs
codées URL qui ne contiennent pas de caractère
d'échappement.
Encode(s1 [, s2 ] )
Renvoie la version codée d'une chaîne donnée.
Prise en charge limitée
JavaScript reconnaît uniquement les valeurs
codées URL qui ne contiennent pas de caractère
d'échappement.
Eval()
Renvoie la valeur d'un calcul de formulaire donné.
Eval(s1)
Exists(v1)
Détermine si le paramètre donné est une syntaxe de
référence valide à un objet existant.
Aucun
LIVECYCLE DESIGNER ES2 48
Rédiger un script avec FormCalc et JavaScript
LiveCycle Designer ES2 Scripting Basics
Fonction FormCalc
Description
Méthode JavaScript équivalente
Floor(n1)
Renvoie le plus grand nombre entier inférieur ou égal à la
valeur donnée.
Math.floor(n1)
Format(s1, s2)
Formate les données fournies selon la chaîne de format
d'image indiquée.
Aucun
FV(n1, n2, n3)
Renvoie la valeur capitalisée de paiements fixes effectués à
intervalles réguliers, compte tenu d'un taux d’intérêt fixe.
Aucun
Get(s1)
Télécharge le contenu de l'adresse URL indiquée.
Aucun
HasValue(v1)
Détermine si le paramètre indiqué est une syntaxe de
référence valide dont la valeur n'est ni nulle, ni vide, ni un
blanc.
Aucun
IPmt(n1, n2, n3, n4, n5)
Renvoie le montant de l'intérêt payé pour un prêt au cours
d'une période donnée.
Aucun
IsoDate2Num(d1)
Renvoie le nombre de jours écoulés depuis la date
considérée, à partir d'une chaîne de date valide.
Aucun
IsoTime2Num(d1)
Renvoie le nombre de millisecondes écoulées depuis
l'époque considérée, à partir d'une chaîne d'heure valide.
Aucun
Left(s1, n1)
Extrait un nombre spécifique de caractères d'une chaîne, en
commençant par le premier caractère à gauche.
String.substring(n1, n2)
Len(s1)
Renvoie le nombre de caractères d'une chaîne donnée.
String.length
LocalDateFmt( [ n1 [, k1 ] ] )
Renvoie une chaîne de format de date localisée, à partir d'un
style de format de date.
Aucun
LocalTimeFmt( [ n1 [, k1 ] ] )
Renvoie une chaîne de format d'heure localisée, à partir d'un
style de format d'heure.
Aucun
Lower(s1 [, k1 ] )
Convertit en minuscules toutes les majuscules d'une chaîne
donnée.
String.toLowerCase(s1)
Ltrim(s1)
Renvoie une chaîne sans aucun caractère d'espace blanc à
gauche.
Aucun
Max(n1 [, n2... ] )
Renvoie la valeur maximale des éléments non nuls d'un
ensemble donné de nombres.
Math.max(n1, n2)
Min(n1 [, n2... ] )
Renvoie la valeur minimale des éléments non nuls d'un
ensemble donné de nombres.
Math.min(n1, n2)
Mod(n1, n2)
Renvoie le reste d'un nombre divisé par un autre.
Utilisez l'opérateur modulo (%).
NPV(n1, n2 [, ... ] )
Renvoie la valeur nette actualisée d'un investissement,
compte tenu d'une série de mouvements futurs de l'encaisse
et d'un taux d'actualisation.
Aucun
Num2Date(n1[, f1 [, k1 ] ] )
Renvoie une chaîne de date à partir du nombre de jours
écoulés depuis l'époque considérée.
Aucun
Num2GMTime(n1 [,f1 [, k1 ] ] )
Renvoie une chaîne d'heure UT à partir du nombre de
millisecondes écoulées depuis l'époque considérée.
Aucun
Num2Time(n1 [,f1 [, k1 ] ] )
Renvoie une chaîne d'heure à partir du nombre de
millisecondes écoulées depuis l'époque considérée.
Aucun
Vous pouvez faire appel aux expressions
régulières JavaScript pour effectuer cette
opération.
LIVECYCLE DESIGNER ES2 49
Rédiger un script avec FormCalc et JavaScript
LiveCycle Designer ES2 Scripting Basics
Fonction FormCalc
Description
Méthode JavaScript équivalente
Oneof(s1, s2 [, s3... ] )
Renvoie vrai (1) si une valeur se trouve dans un ensemble
donné et faux (0) dans le cas contraire.
Aucun
Parse(s1, s2)
Analyse les données fournies selon le format d'image donné.
Aucun
Pmt(n1, n2, n3)
Renvoie le remboursement d'un prêt basé sur des versements
fixes et sur un taux d'intérêt fixe.
Aucun
Post(s1, s2 [, s3 [, s4 [, s5 ] ] ] )
Place à l'adresse URL indiquée les données fournies.
Aucun
PPmt(n1, n2, n3, n4, n5)
Renvoie le montant du principal payé pour un prêt au cours
d'une période.
Aucun
Put(s1, s2 [, s3 ] )
Télécharge les données fournies vers l'adresse URL indiquée.
Aucun
PV(n1, n2, n3)
Renvoie la valeur actualisée d'un investissement réalisé par
versements fixes périodiques avec un taux d'intérêt fixe.
Aucun
Rate(n1, n2, n3)
Renvoie le taux d'intérêt composé par période nécessaire
pour qu'un investissement d'une valeur actualisée atteigne
une valeur capitalisée au cours d'une période donnée.
Aucun
Ref()
Renvoie une référence à un objet existant.
Aucun
Replace(s1, s2 [, s3 ] )
Remplace toutes les occurrences d'une chaîne par une autre,
dans la chaîne indiquée.
String.replace(s1, s2)
Right(s1, n1)
Extrait plusieurs caractères d'une chaîne donnée, en
commençant par le dernier caractère à droite.
String.substring(n1, n2)
Round(n1 [, n2 ] )
Evalue une valeur ou expression numérique donnée et
renvoie un nombre arrondi comportant le nombre de
décimales défini.
Math.round(n1)
Rtrim(s1)
Renvoie une chaîne sans aucun caractère d'espace blanc à
droite.
Aucun
Space(n1)
Renvoie une chaîne composée d'un nombre donné d'espaces
blancs.
Aucun
Str(n1 [, n2 [, n3 ] ] )
Convertit un nombre en une chaîne de caractères. FormCalc
formate le résultat selon la largeur indiquée et l'arrondit au
nombre de décimales défini.
String(n1)
Cette fonction est similaire aux méthodes
String.search(s1) et
String.match(expression).
Vous pouvez faire appel aux expressions
régulières JavaScript pour effectuer cette
opération.
ou
Number.toString(radix)
Stuff(s1, n1, n2 [, s2 ] )
Insère une chaîne dans une autre chaîne.
Aucun
Substr(s1, n1, n2)
Extrait une partie d'une chaîne donnée.
String.substring(n1, n2)
Sum(n1 [, n2... ] )
Renvoie la somme des éléments non nuls d'un ensemble
donné de nombres.
Aucun
Term(n1, n2, n3)
Renvoie le nombre de périodes nécessaires pour atteindre la
valeur capitalisée donnée, compte tenu de paiements fixes
périodiques versés sur un compte portant intérêt.
Aucun
LIVECYCLE DESIGNER ES2 50
Rédiger un script avec FormCalc et JavaScript
LiveCycle Designer ES2 Scripting Basics
Fonction FormCalc
Description
Méthode JavaScript équivalente
Time()
Renvoie l'heure actuelle du système représentée sous forme
du nombre de millisecondes écoulées depuis l'époque
considérée.
Date.getTime()
Time2Num(d1 [, f1 [, k1 ] ] )
Renvoie le nombre de millisecondes écoulées depuis
l'époque considérée, à partir d'une chaîne d'heure.
Aucun
TimeFmt([n1 [, k1 ] ] )
Renvoie un format d'heure, à partir d'un style de format
d'heure.
Aucun
UnitType(s1)
Renvoie les unités d'une étendue d'unité. Une étendue d'unité
est une chaîne composée d'un nombre suivi d'un nom
d'unité.
Aucun
UnitValue(s1 [, s2 ] )
Renvoie la valeur numérique d’une mesure avec l'étendue
d'unité qui lui est associée, après une conversion d’unité
facultative.
Aucun
Upper(s1 [, k1 ] )
Convertit en majuscules toutes les minuscules d'une chaîne.
String.toUpperCase()
Uuid(n1)
Renvoie une chaîne UUID qui sert de méthode
d'identification.
Aucun
Within(s1, s2, s3)
Renvoie vrai (1) si une valeur de contrôle se trouve dans une
plage donnée, et faux (0) dans le cas contraire.
String.search(s1)
WordNum(n1 [, n2 [, k1 ] ] )
Renvoie le texte équivalent à un nombre donné.
Aucun
L'objet Date JavaScript ne se sert pas de
l'époque comme point de référence.
Utilisation de FormCalc
FormCalc est un langage de calcul simple mais puissant, basé sur les tableurs traditionnels. Il permet de créer des formulaires, rapidement
et efficacement, sans exiger la maîtrise des techniques ou des langages de script traditionnels. Grâce à plusieurs des fonctions intégrées, les
utilisateurs inexpérimentés de FormCalc peuvent créer rapidement des formulaires sans avoir à effectuer de calculs, de validations et d'autres
vérifications qui prennent souvent beaucoup de temps. Vous pouvez ainsi créer un ensemble de règles de base pour le modèle de formulaire
qui permet au formulaire résultant de réagir en fonction des données qu'il rencontre.
Dans Designer ES2, FormCalc est le langage de script par défaut dans tous les emplacements de script. Le langage JavaScript constitue l'autre
choix possible. Pour plus d'informations sur la configuration du langage de script par défaut, reportez-vous à la section « Configuration de
l’espace de travail Designer ES2 pour les scripts » à la page 11.
Attention : si vous développez des formulaires destinés à être utilisés avec un processus serveur (par exemple, à l'aide de Formulaires ES2), avec
l'intention de générer vos formulaires au format HTML, il est préférable de développer vos calculs et scripts avec JavaScript. Les calculs FormCalc
ne sont pas reconnus par les navigateurs HTML, et sont enlevés avant que les formulaires ne soient rendus en HTML.
FormCalc traite chaque nouvelle ligne dans l'éditeur de script comme une nouvelle expression à évaluer.
Utilisation de fonctions intégrées
FormCalc proposent de nombreuses fonctions portant sur des domaines variés, tels que les mathématiques, les dates et heures, les chaînes,
la finance, la logique et le Web. Ces zones correspondent aux types de fonction habituellement rencontrés dans les formulaires. Ces fonctions
permettent de manipuler les données de formulaire de manière rapide, facile et utile.
Au niveau le plus élémentaire, un calcul peut consister en une fonction FormCalc simple seulement. Cependant, une fonction FormCalc
simple peut utiliser d'autres fonctions FormCalc comme paramètres.
LIVECYCLE DESIGNER ES2 51
Rédiger un script avec FormCalc et JavaScript
LiveCycle Designer ES2 Scripting Basics
Pour attacher une fonction FormCalc à un objet
Vous pouvez ajouter une fonction FormCalc à n'importe quel objet de conception de formulaire afin de permettre l'exécution de calculs et
de scripts, à l'exception des objets de script.
1
Assurez-vous de disposer d'une version multiligne de l'éditeur de script dans l'espace de travail Designer ES2.
2
Choisissez un champ du formulaire.
3
Dans la zone Afficher, sélectionnez l'événement calculate.
4
Cliquez sur l'icône Fonctions
5
Choisissez la fonction souhaitée et appuyez sur Entrée.
6
Remplacez la notation de syntaxe de la fonction par défaut par votre propre série de valeurs.
7
Cliquez sur l'onglet Aperçu PDF pour tester le formulaire.
ou appuyez sur F10 pour afficher la liste des fonctions.
Syntaxe de fonction intégrée
Chaque fonction FormCalc utilise une notation de syntaxe spécifique que vous devez respecter pour que les fonctions soient correctement
exécutées. Le tableau décrit, d'une manière générale, les éléments de notation de syntaxe.
Notation de syntaxe
Valeurs de remplacement
d
Chaîne de date valide (par exemple, 03/15/1996)
f
Chaîne de format de date valide (par exemple, MM/JJ/AAAA)
k
Identifiant local valide (par exemple, fr_FR)
n
Valeur numérique valide. Notez que la plage de valeurs correctes varie selon les fonctions.
s
Unité de mesure valide (par exemple, « cm » pour centimètres)
v
Syntaxe de référence valide.
n1, n2, n3
Toutes les valeurs sont requises.
[ [ n [, k ] ] ]
Aucune valeur n'est requise, mais vous pouvez choisir de ne préciser que n, ou à la fois n et k.
n1 [, n2 ... ]
n1 est requis, mais vous pouvez choisir de préciser un nombre illimité de valeurs supplémentaires.
d [, f [, k ] ]
d est requis, mais vous pouvez également choisir de préciser f, ou à la fois f et k.
Pour plus d'informations et d'exemples sur les valeurs de notation de syntaxe, voir les fonctions FormCalc appropriées dans l'aide de
Designer ES2.
Création de calculs de base
A propos des calculs de base
Les expressions simples sont les instances les plus basiques des scripts. Ces expressions n'impliquent pas l'utilisation de fonctions intégrées
FormCalc et ne dépassent jamais une ligne. Ajoutez des expressions simples à l'événement calculate d'un champ ou d'un objet spécifique de
manière à ce que la valeur de l'expression puisse être générée dans votre formulaire.
Exemples de calculs de base
Voici quelques exemples d'expressions simples :
2
"abc"
2 - 3 * 10 / 2 + 7
LIVECYCLE DESIGNER ES2 52
Rédiger un script avec FormCalc et JavaScript
LiveCycle Designer ES2 Scripting Basics
Chaque expression simple donne une seule valeur, après exécution des opérations dans l'ordre traditionnel, même si cet ordre n'est pas
toujours évident à déterminer à partir de la syntaxe de l'expression. Par exemple, la série d'expressions suivante produit des résultats
équivalents.
Expression
Equivalent à
Résultat
"abc"
"abc"
abc
2 - 3 * 10 / 2 + 7
2 - (3 * 10 / 2) + 7
-6
(10 + 2) * (5 + 4)
(10 + 2) * (5 + 4)
108
0 and 1 or 2 > 1
(0 and 1) or (2 >1)
1 (true)
2 < 3 not 1 == 1
(2 < 3) not (1 == 1)
0 (false)
Comme le suggère le tableau précédent, tous les opérateurs FormCalc possèdent un certain niveau de priorité lorsqu’ils figurent dans des
expressions. Le tableau suivant illustre la hiérarchie des opérateurs.
Priorité
Opérateur
La plus élevée
=
(Unaire) - , + , not
*,/
+,< , <= , > , >= , lt , le , gt , ge
== , <> , eq , ne
& , and
La plus basse
| , or
Tous les exemples précédents sont des expressions simples valides que vous pouvez ajouter à un champ ou un objet de formulaire acceptant
des calculs et des scripts. Par exemple, si vous créez un formulaire dans Designer ES2 avec un seul champ numérique et que vous ajoutez le
calcul suivant à l'événement calculate dans l'éditeur de script.
LIVECYCLE DESIGNER ES2 53
Rédiger un script avec FormCalc et JavaScript
LiveCycle Designer ES2 Scripting Basics
Lorsque vous cliquez ensuite sur le panneau Aperçu PDF pour afficher le formulaire complet, la valeur de l'expression simple apparaît dans
le champ de texte.
Si la valeur n'apparaît pas dans l'aperçu, assurez-vous que votre expression simple apparaît dans l'événement calculate de l'objet de
conception de formulaire. Assurez-vous également que vous avez correctement installé Designer ES2 et Acrobat.
Utilisation de JavaScript
Designer ES2 prend en charge l'utilisation de JavaScript 1.6 ou version antérieure dans toutes les situations compatibles avec les fonctions
de script pour offrir des possibilités accrues et plus de flexibilité en matière de conception de formulaires.
Les développeurs qui maîtrisent le langage JavaScript peuvent appliquer leurs connaissances dans Designer ES2. Designer ES2 offre de
nombreuses propriétés et méthodes permettant d'améliorer JavaScript pour que vous puissiez accéder aux valeurs de champ et d'objet. Ces
propriétés et méthodes combinées à la syntaxe de référence de Designer ES2 permettent une manipulation plus aisée des valeurs et des
données de formulaire.
Remarque : l'éditeur de script ne permet pas la vérification des erreurs de syntaxe des scripts créés à l'aide de JavaScript. En outre, les options
de fin d'instructions n'apparaissent pas pour les objets ou méthodes JavaScript standard.
Création de scripts à l'aide de JavaScript
La création de scripts dans Designer ES2 à l'aide de JavaScript est similaire à la création de JavaScript dans d’autres applications. Vous pouvez
vous baser sur vos connaissances des concepts JavaScript, réutiliser les fonctions JavaScript à l'aide de l'objet de script de Designer ES2 et
tirer parti des fonctionnalités du langage JavaScript.
Cependant, il est important de noter que même si les connaissances de JavaScript sont transférables, vous devez comprendre comment créer
une syntaxe de référence Designer ES2 pour utiliser efficacement JavaScript dans votre conception de formulaire. Plus particulièrement,
vous devez savoir utiliser correctement la syntaxe de référence Modèle d'objet de formulaire XML pour accéder aux objets de votre
conception de formulaire.
LIVECYCLE DESIGNER ES2 54
Rédiger un script avec FormCalc et JavaScript
LiveCycle Designer ES2 Scripting Basics
Ce tableau décrit les concepts de base du développement de scripts en JavaScript pour Designer ES2. Il indique également où trouver
davantage d'informations sur chaque concept dans l'aide de Designer ES2.
Concept de base
Pour plus de détails, voir...
Création de références à des propriétés et valeurs d'objets, y compris l'utilisation
de la méthode resolveNode.
« Référence aux propriétés et aux valeurs d'objet » à la page 60
Test et débogage de votre formulaire à l’aide des modèles d'événement et
d'hôte.
« Test et débogage des calculs et des scripts » à la page 24
Utilisation de l'objet de script pour réutiliser les fonctions JavaScript existantes.
« Création et réutilisation des fonctions JavaScript » à la page 68
« Pour utiliser des options de fin d'instructions pour créer des calculs et des scripts »
à la page 21
« Référence aux propriétés et aux valeurs d'objet » à la page 60
Outre les ressources disponibles dans l'aide de Designer ES2, le LiveCycle Developer Center contient des ressources étendues de création de
scripts et de la documentation.
Règles d'application de plage stricte dans JavaScript
Pour travailler avec JavaScript dans des formulaires, il est important de déclarer les objets et les variables dans la plage à laquelle ils sont
destinés. En général, le fait de déclarer inutilement des objets et des variables peut entraîner des problèmes de performances. L'application
de plage stricte a été introduite dans Designer 8.1 afin d'améliorer le temps d'exécution et l'utilisation de la mémoire d'un formulaire.
Qu'est-ce qu'une plage dans JavaScript ?
Une plage fonctionne vers l'extérieur de manière à ce que tout ce qui se trouve entre accolades ({}) peut accéder à ce qui se trouve à l'extérieur.
En revanche, tout ce qui se trouve à l'extérieur des accolades ne peut pas accéder à ce qui se trouve à l'intérieur.
Dans l'exemple qui suit, la première accolade ouvre la plage de fonction et la deuxième la ferme. Tout ce qui se trouve entre les accolades se
situe dans la plage de « foo » ().
LIVECYCLE DESIGNER ES2 55
Rédiger un script avec FormCalc et JavaScript
LiveCycle Designer ES2 Scripting Basics
La plage de l'exemple suivant est valide car var nFooVar = nOutsideVar entre accolades peut accéder à var nOutsideVar = 2 à
l'extérieur des accolades.
En revanche, l'exemple suivant illustre une plage non valide car var nOutsideVar = nFooVar ne peut pas accéder à var nFooVar =4
entre les accolades.
Une plage de création de script décrit des éléments de script pouvant accéder à d'autres éléments. Les éléments de script peuvent être des
variables ou des fonctions.
Qu'est-ce qu'une plage XML ?
Dans la conception de formulaire, une plage concerne la hiérarchie. Par exemple, pour accéder au sous-formulaire inside de la source XML
suivante, vous devez taper outside.inside.
<subform name="outside">
<subform name="inside">
…
</subform>
</subform>
Ne tapez pas inside.outside car vous devez d'abord accéder au sous-formulaire le plus à l'extérieur et progresser ensuite vers l'intérieur.
LIVECYCLE DESIGNER ES2 56
Rédiger un script avec FormCalc et JavaScript
LiveCycle Designer ES2 Scripting Basics
Expressions SOM et plage
Dans les formulaires destinés à Acrobat ou Adobe Reader 8.1, les expressions SOM comportent des plages correctes comme indiqué dans
cet exemple :
<subform name="a">
<subform name="b"/>
Dans les formulaires destinés à Acrobat ou Adobe Reader 8.0, l'expression SOM a.b.a renvoie le sous-formulaire a. Dans les formulaires
destinés à Acrobat ou Adobe Reader 8.1, l'expression SOM a.b.a renvoie une valeur null car le sous-formulaire b ne comporte pas d'enfant
nommé a. Dans Acrobat ou Adobe Reader 9.0 (ou une version ultérieure), l'expression renvoie une erreur car a n'est pas un enfant valide
de b.
Dans Acrobat ou Adobe Reader 8.1, les fonctions et variables contenues dans un script de nœud ne sont pas globalisées (contrairement aux
objets de script) comme indiqué dans cet exemple :
<field name="field1">
event activity="initialize">
<script contentType="application/x-javascript">
// La fonction bar() s'applique à field1.initialize ; rien en dehors de la plage <event
activity="initialize"> n'a accès à ce qui se trouve à l'intérieur (dans la version 8.1).
function bar()
{
return "bar";
}
</script>
</event>
/field>
field name="field2">
<event activity="click">
<script contentType="application/x-javascript">
field1.bar();
</script>
</event>
</field>
Si vous cliquez sur field 2 dans un formulaire destiné à Acrobat ou Adobe Reader 8.0, la fonction bar() s'exécute.
Si vous cliquez sur field 2 dans un formulaire destiné à Acrobat ou Adobe Reader 8.0, la fonction bar() ne s'exécute pas. La raison de cela
est que la fonction bar() est disponible uniquement depuis l'intérieur du script initialisé de field1.
LIVECYCLE DESIGNER ES2 57
Rédiger un script avec FormCalc et JavaScript
LiveCycle Designer ES2 Scripting Basics
Application de plage et objets de script
Les objets de script disposent d'une plage globale. Par conséquent, n'importe qui peut y accéder de n'importe où. Si vous disposez d'une
méthode et que vous souhaitez qu'à la fois field1.initialize et field2.click puissent y accéder, placez-la dans un objet de script.
L'application d'une plage stricte signifie que vous ne pouvez pas appeler bar() de n'importe quel emplacement dans un formulaire. Vous
obtenez également une erreur d'exécution indiquant que la fonction bar() n'a pas pu être résolue. Le moteur de script a recherché bar() à
l'intérieur de la plage à laquelle vous avez accès et ne l'a pas trouvé.
Application de plage et version cible
Si vous utilisez l'application de plage stricte, n'oubliez pas que de meilleures performances sont possibles dans les formulaires destinés à
Acrobat ou Adobe Reader 8.1 et aux versions ultérieures. Évitez d'utiliser l'application de plage stricte dans des formulaires destinés à des
versions antérieures Acrobat ou Adobe Reader. Sinon, les scripts des formulaires risquent de fonctionner différemment. Pour les formulaires
existants, effectuez une copie de sauvegarde du formulaire avant d'activer l'application de plage stricte et vérifiez toujours le script à la fin de
l'opération. Lorsque vous activez l'application de plage stricte puis modifiez la version cible pour une version antérieure à Acrobat ou
Adobe Reader 8.1, des messages d'avertissement s'affichent.
Utiliser l'application de plage
Lorsqu'un formulaire est destiné à Acrobat ou Adobe Reader 8.1 et que l'application de plage stricte est activée, les variables JavaScript
déclarées sont libérées après l'exécution de chaque script. Lorsqu'un formulaire est destiné à Acrobat ou Adobe Reader 9.0 et aux versions
ultérieures, l'application de plage stricte ne libère pas toutes les variables JavaScript. L'exception à cela est lorsque vous refusionnez ou
importez de nouvelles données.
Les améliorations de performances obtenues avec les règles d'application de plage stricte concernent les formulaires destinés à Acrobat ou
Adobe Reader 8.1 et aux versions ultérieures. N'appliquez pas les règles d'application de plage stricte aux formulaires destinés aux versions
de Acrobat ou Adobe Reader antérieures à la 8. Sinon, les scripts risquent de se comporter différemment ou de ne pas fonctionner.
Pour activer l'application de plage stricte
1
Choisissez Fichier > Propriétés du formulaire, puis cliquez sur l'onglet Valeurs par défaut.
2
Sélectionnez Règles d'application de plage stricte dans JavaScript puis cliquez sur OK.
Pour attacher un script JavaScript à un objet
Vous pouvez ajouter un script JavaScript à n'importe quel objet de conception de formulaire afin de permettre l'exécution de calculs ou de
scripts, y compris des objets de script.
1
Assurez-vous de disposer d'une version multiligne de l'éditeur de script dans l'espace de travail Designer ES2.
2
Choisissez un champ du formulaire. Par exemple, vous pouvez ajouter un nouveau champ de texte à votre conception de formulaire.
3
Dans la zone Afficher, sélectionnez un événement valide. Par exemple, sélectionnez l'événement docReady à l'aide du nouveau champ
de texte.
4
Dans la liste Exécuter sur, choisissez l'emplacement où le script doit être exécuté. Par exemple, à l'aide du nouveau champ de texte,
sélectionnez Client.
5
Cliquez sur l'icône Fonctions
6
Choisissez la fonction souhaitée et appuyez sur Entrée.
7
Remplacez la notation de syntaxe de la fonction par défaut par votre propre série de valeurs. Vous pouvez également créer votre propre
script manuellement dans le champ Source du script de l'éditeur de script. Par exemple, dans le nouveau champ de texte, ajoutez le script
JavaScript au champ Source du script :
ou appuyez sur F10 pour afficher la liste des fonctions JavaScript.
this.border.fill.color.value = "255,0,0";
8
Cliquez sur l'onglet Aperçu PDF pour tester le formulaire. Le texte associé au nouvel objet de bouton apparaît en rouge lorsque le
formulaire est affiché dans l'onglet Aperçu PDF.
58
6. Variables
Vous pouvez définir des variables de formulaire dans Designer ES2 pour enregistrer des informations spécifiques à un emplacement central
et accessible. Une variable agit généralement comme une balise d'emplacement pour un texte susceptible d'être modifié par la suite. Elle sert,
par exemple, à stocker le titre d'une zone de message. Lorsque ce texte doit être modifié, il vous suffit alors d'ouvrir le formulaire ou le modèle
concerné, et de mettre à jour le texte une seule fois à l'aide de la définition de variable. Designer ES2 propage automatiquement le nouveau
texte dans toutes les instances de la variable insérée.
Notez que les variables de formulaire sont définies hors de l'éditeur de script et qu'elles sont accessibles par script sur tous les objets du
formulaire, par opposition aux variables de script que vous créez dans un FormCalc ou un script JavaScript spécifique.
Vous pouvez créer, visualiser et supprimer des variables sans avoir recours aux scripts. Cependant, vous devez utiliser des scripts pour
accéder aux valeurs enregistrées par des variables et les manipuler, ou pour appliquer les valeurs aux objets du formulaire.
Remarque : les valeurs des variables de formulaire sont restaurées chaque fois que vous ouvrez un formulaire.
Avant de créer une variable, choisissez le nom de la variable et du texte qu'elle doit contenir. Les définitions de variables sont enregistrées
en même temps que le formulaire ou le modèle.
Attribution de noms aux variables
Lors de l'exécution, des conflits de noms se produisent si les noms des variables sont identiques à ceux utilisés pour les méthodes et les
propriétés du modèle d'objet XML ou à ceux des champs de la conception de formulaire. Ces conflits peuvent être à l'origine du renvoi de
valeurs inattendues par les scripts. Il est donc important d'attribuer des noms uniques aux variables. Voici quelques exemples pratiques :
•
•
Utilisez le nom de la variable fieldWidth et fieldHeight plutôt que x et y.
Utilisez le nom d'objet de conception de formulaire clientName plutôt que name.
Remarque : les noms de variable distinguent les majuscules des minuscules et ne doivent contenir aucun espace.
Pour définir une variable de texte
1
Choisissez Fichier > Propriétés du formulaire.
2
Dans le panneau Variables, cliquez sur Nouveau (Insérer)
3
Dans la liste Variables, tapez un seul nom pour la variable et appuyez sur Entrée. les noms de variable distinguent les majuscules des
minuscules et ne doivent contenir aucun espace.
4
Cliquez une fois sur la zone à droite et tapez le texte que vous voulez associer à cette variable.
.
LIVECYCLE DESIGNER ES2 59
Variables
LiveCycle Designer ES2 Scripting Basics
La variable apparaît dans la palette Hiérarchie au niveau formulaire.
A. Nouvelle variable de formulaire
Pour visualiser une définition de variable de texte
1
Choisissez Fichier > Propriétés du formulaire.
2
Cliquez sur l'onglet Variables et sélectionnez la variable dans la liste Variables. Le texte associé est affiché dans la zone à droite.
Pour supprimer une variable de texte
1
Choisissez Fichier > Propriétés du formulaire.
2
Sélectionnez la variable dans le panneau Variables et cliquez sur Supprimer
.
Utilisation des variables dans les calculs et les scripts
Une fois que vous avez créé des variables de formulaire, il vous suffit de vous référer au nom de variable dans vos calculs et scripts pour
obtenir la valeur de la variable.
Attention : lorsque vous nommez des variables, évitez d'utiliser des noms identiques aux noms des propriétés de modèle d'objet de formulaire
XML, de méthodes ou de noms d'objet. Pour plus de détails sur les propriétés de modèle d'objet de formulaire XML, les méthodes et les objets,
voir le Designer ES2 Guide de référence pour les scripts.
Créons, par exemple, les définitions de variable de formulaire suivantes.
Nom de variable
Valeur
firstName
Tony
lastName
Blue
age
32
Dans FormCalc, vous pouvez accéder aux valeurs de variable de la même manière que vous accédez aux valeurs de champ et d'objet. Dans
cet exemple, les valeurs sont attribuées à trois champs différents.
TextField1 = firstName
TextField2 = lastName
NumericField1 = age
De même, vous pouvez aussi utiliser des variables dans des fonctions FormCalc, comme le montre cet exemple :
Concat( "M./Mme ", firstName, lastName )
Dans JavaScript, vous référencez des valeurs de variable à l'aide de la propriété .value au lieu de la propriété .rawValue utilisée pour les
valeurs de champ et d'objet, comme l'illustre cet exemple.
TextField1.rawValue = firstName.value;
60
7. Référence aux objets dans les calculs et les scripts
Bien que les calculs FormCalc et les scripts JavaScript possèdent leurs propres règles en vue de créer la structure du code, ces deux
fonctionnalités font appel à la même syntaxe de référence lors de l'accès aux propriétés et valeurs des objets de formulaires. Le modèle d'objet
de formulaire XML permet d'accéder de manière structurée aux propriétés et aux valeurs des objets grâce à la convention de dénomination
composée ; chaque propriété, méthode et objet étant séparé par des points (.).
En général, chaque syntaxe de référence possède une structure analogue divisée en diverses sections :
•
Les noms des objets parent dans la hiérarchie de formulaire servant à accéder à un champ ou à un objet spécifique. Vous pouvez utiliser
la palette Hiérarchie et la palette Vue des données pour déterminer l'emplacement d'un objet par rapport à d'autres objets dans le
formulaire et dans les données associées.
•
•
Le nom des objets que vous souhaitez référencer.
Le nom de la propriété ou de la méthode à laquelle vous voulez accéder. Cette section peut inclure des objets du modèle d'objet de
formulaire XML précédant la propriété ou la méthode dans la structure, mais qui ne s'affichent pas en tant qu'objets dans la palette
Hiérarchie.
L'exemple suivant illustre une syntaxe de référence permettant d'accéder à la valeur d'un champ de texte qui utilise les conventions de
dénomination d'objet par défaut :
A. Objets de hiérarchie de formulaire B. Nom de l'objet C. Nom de la propriété ou de la méthode
Remarque : par défaut, l'objet de sous-formulaire représentant la première page d'un nouveau formulaire n'a pas de nom. Dans la syntaxe de
référence précédente, le sous-formulaire sans nom est représenté par #subform.
La structure de notation de la syntaxe de référence varie légèrement selon le cas. Par exemple, une syntaxe de référence complète est
toujours applicable, mais, dans certains cas, vous pouvez être amené à faire appel à une syntaxe de référence abrégée ou à un raccourci de
la syntaxe de référence afin de limiter la taille de la syntaxe.
Référence aux propriétés et aux valeurs d'objet
La syntaxe de référence servant à examiner ou à modifier les propriétés et les valeurs d'objet peut prendre l'une des formes suivantes :
Complète La syntaxe de référence contient la hiérarchie d'objet complète commençant par le nœud racine xfa. La syntaxe de référence
complète permet d'accéder précisément à la propriété ou la valeur d'un objet, quel que soit l'emplacement du calcul ou du script contenant
la syntaxe.
Abrégée La syntaxe de référence est abrégée en raison du positionnement relatif du calcul ou du script qui contient la syntaxe de référence
et les références aux objets de syntaxe ou en raison de l'utilisation de raccourcis. Bien qu'il soit généralement plus rapide de créer une syntaxe
de référence abrégée, cette méthode présente l'inconvénient de ne plus être exploitable dès que les objets changent de position les uns par
rapport aux autres.
LIVECYCLE DESIGNER ES2 61
Référence aux objets dans les calculs et les scripts
LiveCycle Designer ES2 Scripting Basics
La figure suivante illustre la hiérarchie d'un formulaire de bon de commande.
Cette illustration présente la syntaxe de référence complète, pour FormCalc et JavaScript, indiquant l'accès à la valeur du champ
txtCondition. Cette syntaxe de référence peut être utilisée au sein d'un calcul ou d'un script ou encore avec tout objet du formulaire.
A. Noeud racine B. Modèle C. Noeud racine de la conception de formulaire D. Objet de la page E. Nom de sous-formulaire F. Nom de la page G. Nom de la propriété ou
de la méthode
Remarque : même si la syntaxe de référence est commune à FormCalc et à JavaScript, vous devez respecter les conventions de chaque langage
de script. Ainsi, dans l'exemple précédent, la syntaxe de référence est compréhensible par FormCalc, mais vous devrez inclure un caractère pointvirgule à la fin (;) pour JavaScript.
Si deux objets existent dans le même conteneur, tel qu'un sous-formulaire, leur référence indique qu'ils partagent le même contexte. Lorsque
des objets existent dans le même contexte, vous pouvez utiliser une syntaxe de référence abrégée comprenant uniquement le nom de l'objet
suivi de la propriété ou de la méthode à accéder. Par exemple, dans le cadre de l'exemple précédent, la syntaxe de référence abrégée suivante
accède à la valeur du champ txtCondition à partir de n'importe quel champ situé dans le sous-formulaire total :
txtCondition.rawValue
Si deux objets existent dans des conteneurs différents, ils ne partagent pas le même contexte. Dans ce cas, vous pouvez utiliser une syntaxe
de référence abrégée. Cependant, elle doit commencer par le nom de l'objet conteneur situé au niveau supérieur non commun aux deux
objets. Ainsi, dans le cadre de la hiérarchie ci-dessus, la syntaxe de référence abrégée suivante indique la valeur du champ address du champ
txtCondition :
header.address.rawValue
LIVECYCLE DESIGNER ES2 62
Référence aux objets dans les calculs et les scripts
LiveCycle Designer ES2 Scripting Basics
En raison de la manière dont le modèle d'objet de formulaire XML est structuré, certaines propriétés et méthodes d'objet existent pour les
objets enfant sur le formulaire. Ces objets enfant existent seulement en tant que parties du modèle d'objet de formulaire XML et
n'apparaissent pas dans les palettes Hiérarchie et Vue des données. Pour accéder à ces propriétés et méthodes, vous devez inclure les objets
enfant dans la syntaxe de référence. La syntaxe de référence suivante définit le texte d'info-bulle pour le champ txtCondition :
txtCondition.assist.toolTip.value = "Conditions d'achat." // FormCalc
txtCondition.assist.toolTip.value = "Conditions d'achat."; // JavaScript
Pour plus d'informations sur les objets de modèle d'objet de formulaire XML et leur structure, voir la rubrique Designer ES2 Guide de
référence pour les scripts.
Référence aux objets sans nom et aux objets répétés
Designer ES2 prend en charge la fonctionnalité permettant de créer à la fois des objets sans nom et plusieurs objets portant le même nom.
Vous pouvez établir des calculs et des scripts en vue d'accéder ou de remplacer les propriétés et les valeurs des objets sans nom à l'aide de la
notation comportant une dièse (#), ainsi que les valeurs d'occurrence d'objet à l'aide de la notation comportant des crochets ([ ]). FormCalc
interprète correctement la dièse (#) et les crochets ([ ]), mais pas JavaScript. Pour accéder à la valeur d'un champ de texte impliquant une
dièse (#) ou des crochets ([ ]) avec JavaScript, vous devez utiliser la méthode resolveNode, ainsi qu'une syntaxe de référence complète ou
abrégée.
Lorsque vous générez un formulaire vide, le nom du sous-formulaire représentant la page du formulaire correspond, par défaut, à un sousformulaire sans nom doté de la valeur d'occurrence 0. L'illustration suivante présente la hiérarchie de formulaire sur un nouveau formulaire
utilisant les conventions de dénomination d'objet par défaut.
Le sous-formulaire sans titre représentant la première page du formulaire porte le numéro d'occurrence 0. En pareil cas, les deux syntaxes
de référence suivantes ont accès à la valeur du champ de texte dans la hiérarchie de formulaire ci-dessus sur un nouveau formulaire utilisant
les conditions de dénomination par défaut :
xfa.form.form1.#subform.TextField1.rawValue
xfa.form.form1.#subform[0].TextField1.rawValue
Remarque : par défaut, si vous ne précisez pas la valeur d'occurrence pour un objet, la syntaxe de référence accède à la première occurrence de
l'objet.
FormCalc reconnaît la syntaxe de référence complète ci-dessus et l'interprète directement. Pour accéder à la même valeur à l'aide de
JavaScript, vous devez utiliser un des formulaires de la méthode de script resolveNode :
xfa.resolveNode("xfa.form.form1.#subform.TextField1").rawValue;
xfa.resolveNode("xfa.form.form1.#subform[0].TextField1").rawValue;
LIVECYCLE DESIGNER ES2 63
Référence aux objets dans les calculs et les scripts
LiveCycle Designer ES2 Scripting Basics
Si vous ajoutez une nouvelle page au formulaire, le nom du sous-formulaire correspondant à la nouvelle page est, par défaut, sans nom.
Toutefois, la valeur d'occurrence du nouveau sous-formulaire est 1. Vous pouvez désigner le nouveau sous-formulaire sans nom par une
syntaxe de référence similaire :
xfa.form.form1.#subform[1].TextField1.rawValue // FormCalc
xfa.resolveNode("xfa.form.form1.#subform[1].TextField1").rawValue; // JavaScript
Remarque : les options d'exécution d'instructions de l'éditeur de script incluent des objets sans nom au début de la liste. Les objets possédant
plusieurs valeurs d'occurrence n'apparaissent qu'une fois dans la liste, la première occurrence seule étant indiquée. Si vous voulez accéder à une
valeur d'occurrence différente de la première, vous devez ajouter manuellement cette valeur à la syntaxe de référence.
Utilisez la méthode resolveNode pour faire référence aux objets au sein des autres instructions de la syntaxe de référence. Ceci contribue
à réduire le nombre total de scripts nécessaires pour faire référence à un objet, une propriété ou une méthode spécifique. Ainsi, vous pouvez
simplifier la syntaxe menant à un champ de texte de la deuxième page de votre formulaire de la manière suivante :
xfa.form.form1.resolveNode("#subform[1].TextField1").rawValue; // JavaScript
Référence à l'objet actif
Si vous souhaitez modifier les propriétés ou les valeurs de l'objet actif à l'aide des calculs ou des scripts associés à l'objet lui-même, FormCalc
et JavaScript recourent à des raccourcis uniques pour limiter la taille de la syntaxe de référence. FormCalc remplace l'objet actif par le
symbole dollar ($) tandis que JavaScript utilise le mot-clé this.
L'exemple de syntaxe de référence suivante renvoie la valeur de l'objet actif :
$ // FormCalc
this.rawValue // JavaScript
De la même façon, vous pouvez utiliser le raccourci comportant le symbole dollar ($) et le mot-clé this à la place du nom de l'objet actif
afin d'accéder aux propriétés et valeurs des objets de formulaires. L'exemple de syntaxe de référence suivant change le texte d'info-bulle
associé à l'objet actif :
$.assist.toolTip.value = "Il s'agit de texte d'info-bulle."
// FormCalc
this.assist.toolTip.value = "Il s'agit de texte d'info-bulle."; // JavaScript
Raccourcis de la syntaxe de référence FormCalc
Pour faciliter l'accès aux propriétés et aux valeurs et limiter votre travail, FormCalc offre des raccourcis pratiques pour créer des références.
Le tableau suivant décrit les raccourcis de la syntaxe de référence pour FormCalc.
Notation
Description
$
Fait référence au champ ou à l'objet actuel, comme l'illustre cet exemple :
$ = "Tony Blue"
L'exemple ci-dessus définit la valeur du champ ou de l'objet actuel sur Tony Blue.
$data
Représente la racine du modèle de données xfa.datasets.data. Par exemple :
$data.purchaseOrder.total
est équivalent à
xfa.datasets.data.purchaseOrder.total
$event
Représente l'événement d'objet de formulaire actif. Par exemple :
$event.name
est équivalent à
xfa.event.name
LIVECYCLE DESIGNER ES2 64
Référence aux objets dans les calculs et les scripts
Notation
Description
$form
Représente la racine de modèle de formulaire xfa.form. Par exemple :
LiveCycle Designer ES2 Scripting Basics
$form.purchaseOrder.tax
est équivalent à
xfa.form.purchaseOrder.tax
$host
Représente l'objet hôte. Par exemple :
$host.messageBox("Bonjour le monde")
est équivalent à
xfa.host.messageBox("Bonjour le monde")
$layout
Représente la racine du modèle de disposition xfa.layout. Par exemple :
$layout.ready
est équivalent à
xfa.layout.ready
$record
Représente l'enregistrement actuel d'une collection de données, provenant d'un fichier XML par exemple. Par exemple :
$record.header.txtOrderedByCity
référence le noeud txtOrderedByCity dans le noeud header des données XML actuelles.
$template
Représente la racine de la conception de modèle xfa.template. Par exemple :
$template.purchaseOrder.item
est équivalent à
xfa.template.purchaseOrder.item
!
Représente la racine du modèle de données xfa.datasets. Par exemple :
!data
est équivalent à
xfa.datasets.data
*
Sélectionne tous les objets de formulaire dans un conteneur donné (tel qu'un sous-formulaire), quel que soit le nom, ou
sélectionne tous les objets ayant un nom similaire.
Par exemple, l'expression suivante sélectionne tous les objets nommés item sur un formulaire :
xfa.form.form1.item[*]
L'utilisation d'un astérisque (*) est admise dans le langage JavaScript avec la méthode resolveNode. Pour plus
d'informations sur la méthode resolveNode, voir l'aide Designer ES2 ou la rubrique Guide de référence pour les scripts
de LiveCycle Designer ES.
LIVECYCLE DESIGNER ES2 65
Référence aux objets dans les calculs et les scripts
LiveCycle Designer ES2 Scripting Basics
Notation
Description
..
Vous pouvez utiliser deux points à un endroit quelconque de votre syntaxe de référence pour rechercher des objets
faisant partie de n'importe quel sous-conteneur du conteneur actuel (tel qu'un sous-formulaire). Par exemple,
l'expression Subform_Page..Subform2 signifie rechercher le nœud Subform_Page (comme d'habitude) et
trouver un descendant de Subform_Page appelé Subform2.
En se fondant sur l'arborescence ci-dessus,
Subform_Page..TextField2
est équivalent à
Subform_Page.Subform1[0].Subform3.TextField2[0]
puisque TextField2[0] est le premier nœud Subform1 que FormCalc rencontre lors de sa recherche. Deuxième
exemple :
Subform_Page..Subform3[*]
renvoie les quatre objets TextField2.
Vous pouvez utiliser la syntaxe double point (..) avec JavaScript en faisant appel à la méthode resolveNode. Pour plus
d'informations sur la méthode resolveNode, voir l'aide Designer ES2 ou la rubrique Guide de référence pour les scripts
de LiveCycle Designer ES.
#
La notation # (signe dièse) est utilisée pour représenter l'un des éléments suivants dans une syntaxe de référence :
•
Un objet sans nom. Ainsi, la syntaxe de référence suivante accède à un sous-formulaire sans nom :
xfa.form.form1.#subform
•
Une propriété dans une syntaxe de référence si une propriété et un objet possèdent le même nom. La syntaxe de
référence suivante accède, par exemple, à la propriété name d'un sous-formulaire si ce dernier contient également
un champ appelé name :
xfa.form.form1.#subform.#name
L'utilisation du signe dièse (#) est admise dans le langage JavaScript avec la méthode resolveNode. Pour plus
d'informations sur la méthode resolveNode, voir l'aide Designer ES2 ou la rubrique Guide de référence pour les scripts
de LiveCycle Designer ES.
LIVECYCLE DESIGNER ES2 66
Référence aux objets dans les calculs et les scripts
LiveCycle Designer ES2 Scripting Basics
Notation
Description
[ ]
Le crochet ([ ]) représente la valeur d'occurrence d'un objet. Pour créer une référence à une valeur d'occurrence, placez
des crochets ([ ]) après un nom d'objet et insérez entre les crochets l'une des valeurs suivantes :
•
[ n ], où n est un numéro d'index d'occurrence absolu commençant à 0. Un numéro d'occurrence hors limite
ne renvoie aucune valeur. Par exemple :
xfa.form.form1.#subform.Quantity[3]
renvoie à la quatrième occurrence de l'objet Quantity.
•
[ +/- n ], où n indique une occurrence relative à l'occurrence de l'objet porteur de la référence. Les valeurs
positives retournent des nombres d'occurrences plus élevés alors que les valeurs négatives retournent des
nombres d'occurrences plus bas. Par exemple :
xfa.form.form1.#subform.Quantity[+2]
Cette référence retourne l'occurrence de Quantity dont le nombre d'occurrences est deux
de plus que le nombre d'occurrences du conteneur qui constitue la référence. Si, par
exemple, cette référence était jointe à l'objet Quantity[2], la référence serait la même
que :
xfa.template.Quantity[4]
Si le numéro d'index calculé est hors limite, la référence renvoie une erreur.
Cette syntaxe sert surtout à localiser l'occurrence précédente ou suivante d'un objet en
particulier. Par exemple, chaque occurrence de l'objet Quantity (sauf la première) peut
utiliser Quantity[-1] pour obtenir la valeur de l'objet Quantity précédent.
•
[*] indique plusieurs occurrences d'un objet. Le premier objet nommé est trouvé, et les objets portant le même
nom et ayant le même parent immédiat sont retournés. Le résultat de cette notation est une collection d'objets. Par
exemple :
xfa.form.form1.#subform.Quantity[*]
•
Cette expression fait référence à tous les objets portant le nom de Quantity et ayant le même parent immédiat
que la première occurrence de Quantity trouvée par la référence.
Dans les formulaires en arabe, hébreu, thaï et vietnamien, la syntaxe de référence se trouve toujours à droite (même
pour les langues s'écrivant de droite à gauche).
LIVECYCLE DESIGNER ES2 67
Référence aux objets dans les calculs et les scripts
Notation
LiveCycle Designer ES2 Scripting Basics
Description
[ ]
(Suite)
L'arborescence servant de référence, les expressions suivantes retournent les résultats indiqués :
•
Subform_Page.Subform1[*] renvoie les deux objets Subform1.
•
Subform_Page.Subform1.Subform3.TextField2[*] renvoie deux objets TextField2.
Subform_Page.Subform1 a pour résultat le premier objet Subform1 sur la gauche et TextField2[*]
est évalué relativement à l'objet Subform3.
•
Subform_Page.Subform1[*].TextField1 renvoie les deux instances TextField1.
Subform_Page.Subform1[*] a pour résultat les deux objets Subform1 et TextField1 est évalué
relativement aux objets Subform1.
•
Subform_Page.Subform1[*].Subform3.TextField2[1] renvoie le deuxième et le quatrième objet
TextField2 à partir de la gauche. Subform_Page.Subform1[*] a pour résultat les deux objets Subform1
et TextField2[1] est évalué relativement aux objets Subform3.
•
Subform_Page.Subform1[*].Subform3[*] renvoie les deux instances de l'objet Subform3.
•
Subform_Page.* retourne les deux objets Subform1 et l'objet Subform2.
•
Subform_Page.Subform2.* renvoie les deux instances de l'objet NumericField2.
L'utilisation des crochets ([ ]) est admise dans le langage JavaScript avec la méthode resolveNode. Pour plus
d'informations sur la méthode resolveNode, voir l'aide de Designer ES2 ou la rubrique Designer ES Guide de référence
pour les scripts de Live Cycle.
68
8. Création et réutilisation des fonctions JavaScript
Un objet de script est un objet que vous pouvez utiliser pour stocker des fonctions JavaScript et des valeurs séparément de l'objet de
formulaire proprement dit. En général, on utilise un objet de script pour créer des fonctions et des méthodes personnalisées que l'on veut
utiliser sous forme de script JavaScript en différents endroits du formulaire. Cette technique réduit le nombre total de scripts requis pour
réaliser des actions répétitives.
L'objet de script reconnaît uniquement les scripts écrits en langage JavaScript, mais il n'y a aucune restriction quant au lieu d'exécution des
scripts (à condition d'avoir configuré le langage de script JavaScript pour l'événement faisant appel à l'objet de script). Acrobat et
Formulaires ES2 traitent les scripts à partir d'un objet de script de la même manière, mais des différences demeurent. Seuls les scripts
destinés à être exécutés sur le client peuvent utiliser des objets de script destinés à être exécutés sur le client, et réciproquement.
Pour créer un objet de script
La création d'un objet de script se fait en deux temps. La première étape consiste à ajouter l'objet proprement dit à la conception de
formulaire, et la seconde étape consiste à écrire le script que vous souhaitez enregistrer dans l'objet de script.
1
Créez un nouveau formulaire ou ouvrez un formulaire existant.
2
Dans la palette Hiérarchie, cliquez à l'aide du bouton droit sur un objet de niveau formulaire ou un objet de niveau sous-formulaire et
choisissez Insérer un objet de script.
A. Objet de niveau formulaire B. Objet de niveau sous-formulaire C. Objet de script de niveau sous-formulaire D. Objet de script de niveau formulaire
3
(Facultatif) Cliquez à l'aide du bouton droit sur l'objet de script, et choisissez Renommer l'objet.
Pour ajouter un script à un objet de script
Une fois que vous avez un objet de script dans votre formulaire, vous pouvez ajouter des scripts à l'aide de l'éditeur de script.
1
Choisissez l'objet de script dans la palette Hiérarchie.
L'éditeur de script affiche à la fois une valeur de l'objet de script dans la liste Afficher, et la valeur JavaScript dans la liste Langage. Vous
ne pouvez modifier aucune de ces valeurs.
LIVECYCLE DESIGNER ES2 69
Création et réutilisation des fonctions JavaScript
2
Entrez votre script dans le champ Source du script.
3
Cliquez sur l'onglet Aperçu PDF pour tester le formulaire.
LiveCycle Designer ES2 Scripting Basics
Exemple
Créez, par exemple, un objet de script appelé feedback contenant la fonction suivante :
function emptyCheck(oField) {
if ((oField.rawValue == null) || (oField.rawValue == "")) {
xfa.host.messageBox("Vous devez saisir une valeur pour ce champ.", "Message d'erreur", 3);
}
}
Pour référencer les fonctions JavaScript stockées dans un objet de script
Après avoir ajouté des scripts à un objet de script, vous pouvez référencer l'objet de script à partir de tout événement compatible avec les
scripts JavaScript.
1
Sélectionnez un objet de votre formulaire et choisissez un événement dans la liste Afficher.
2
Créez une référence à l'objet de script et aux fonctions voulues dans l'objet de script. La syntaxe générique suivante suppose que l'objet
dans lequel vous référencez l'objet de script est au même niveau que l'objet de script dans la hiérarchie du formulaire ou que l'objet de
script figure au niveau supérieur de la hiérarchie.
3
Appliquez le nouveau script à l'objet de formulaire et testez-le en prévisualisant le formulaire à partir du panneau Aperçu PDF.
script_object.function_name(parameter1, ...);
Comme lors du référencement d'autres objets dans un formulaire, vous devez spécifier une syntaxe valide lorsque vous référencez l'objet de
script en indiquant son emplacement au sein de la hiérarchie. Pour plus d'informations au sujet du référencement des objets dans un script,
voir « Référence aux propriétés et aux valeurs d'objet » à la page 60.
Exemple
En vous basant sur l'exemple d'objet de script de la section « Pour ajouter un script à un objet de script » à la page 68, appliquez le script
JavaScript suivant à l'événement exit pour un champ de texte. Testez le formulaire à partir du panneau Aperçu PDF.
feedback.emptyCheck(this)
70
9. Utilisation des fragments de script
Un fragment de script contient un objet de script. Un objet de script contient des valeurs ou des fonctions JavaScript réutilisables stockées
séparément de tout objet de formulaire, tels qu'un analyseur de dates ou un appel de services Web. En général, un objet de script sert à créer
des fonctions et des méthodes personnalisées destinées à être utilisées en différents endroits d'un formulaire. L'emploi d'objets de script
permet de réduire le nombre total de scripts requis pour réaliser des actions répétitives.
Les fragments de script comprennent exclusivement des objets de script figurant comme enfants de variables dans la palette Hiérarchie. Les
fragments ne peuvent pas contenir de scripts associés à d'autres objets de formulaire, tels que les scripts d'événements (validate, calculate,
ou initialize, par exemple).
Pour créer un fragment de script, servez-vous de la palette Hiérarchie. Pour plus de détails, voir « Pour créer un fragment de script » à la
page 70.
Vous modifiez les fragments script de la même manière que les autres types de fragments.
Propriétés des fragments de script
Lorsque vous sélectionnez un fragment de script, le panneau Objet de script de la palette Objet affiche les propriétés du fragment.
Fichier source
Définit le fichier source de la référence au fragment. Cette propriété est uniquement visible dans le cas d'une référence à un fragment.
Nom du fragment
Définit le nom du fragment. Vous pouvez cliquer sur le bouton Informations sur le fragment
concernant le fragment.
pour visualiser les informations
Cette propriété est visible lorsque vous sélectionnez une référence à un fragment ou un fragment défini dans un fichier source. Dans le cas
d'une référence à un fragment, cette propriété est uniquement disponible si le fichier source est spécifié. La liste Nom du fragment présente
tous les fragments contenus dans le fichier source spécifié. L'option Personnaliser prend en charge directement une expression SOM ou une
valeur d'ID que référence le fragment. Elle prend en charge l'implémentation dans l'Architecture de formulaires XML.
Pour créer un fragment de script
Vous pouvez créer un fragment de script constitué de fonctions courantes destinées à être réutilisées dans plusieurs formulaires. Pour créer
un fragment de script, vous définissez un objet de script contenant les fonctions souhaitées. Le fragment de script ne peut comprendre qu'un
seul objet de script.
1
Créez un objet de script.
2
Dans la palette Hiérarchie, cliquez sur l'objet de script avec le bouton droit de la souris et choisissez Fragments > Créer un fragment.
Remarque : vous pouvez également créer un fragment de script en faisant glisser l'objet de script de la palette Hiérarchie vers la palette
Bibliothèque de fragments.
3
Pour utiliser un nom de fragment différent, saisissez le nom de votre choix dans la zone Nom.
4
(Facultatif) Dans la zone Description, donnez une description du fragment.
LIVECYCLE DESIGNER ES2 71
Utilisation des fragments de script
5
Choisissez une méthode de création de fragment :
•
6
LiveCycle Designer ES2 Scripting Basics
Pour définir le fragment dans un fichier XDP distinct stocké dans la Bibliothèque de fragments, sélectionnez Créer un fragment
dans la Bibliothèque de fragments. Dans la liste Bibliothèque de fragments, sélectionnez la bibliothèque dans laquelle vous souhaitez
enregistrer le fichier du fragment. Pour utiliser un nom de fichier différent, saisissez le nom de fichier voulu pour le fragment dans
la zone Nom du fichier. Si vous ne voulez pas remplacer la sélection par le nouveau fragment, désactivez la case à cocher Remplacer
la sélection par la référence au nouveau fragment de formulaire.
• Pour définir le fragment dans le fichier actif, sélectionnez Créer un fragment dans le document actif.
Cliquez sur OK.
Pour insérer un fragment de script
Les fragments de script vous permettent de réutiliser des fonctions JavaScript dans plusieurs formulaires. Lors de la création d'une
conception de formulaire, vous insérez une référence à un fragment de script existant et celui-ci s'affiche dans la conception de formulaire.
Il est impossible d'insérer un fragment dans un document XFAF.
Remarque : pour afficher un aperçu des fragments dans la palette Bibliothèque de fragments, choisissez l'option Afficher le volet de visualisation
dans le menu de la palette.
Pour insérer un fragment de script à partir de la palette Bibliothèque de fragments
1
Dans la bibliothèque de fragments, sélectionnez le fragment de script.
2
Faites-glisser le fragment vers un objet de sous-formulaire ou un objet de variable dans la palette Hiérarchie.
Pour insérer un fragment de script à partir du menu Insertion
1
Choisissez Insertion > Fragment.
2
Localisez le fichier contenant le fragment.
3
Sélectionnez le fichier et cliquez sur OK. Le fragment s'affiche en tant qu'enfant de l'objet de variables dans le sous-formulaire racine.
72
10. Débogage des calculs et des scripts
Designer ES2 propose différentes fonctions et stratégies pour le débogage des calculs et des scripts, en fonction du langage de script choisi.
Pour le débogage des scripts utilisant le langage JavaScript, vous pouvez utiliser les méthodes alert ou messageBox pour fournir des
commentaires de débogage. L'inconvénient de cette méthode tient au fait que vous devez fermer de nombreuses zones de message. L'autre
inconvénient est que l'affichage d'une zone de message peut entraîner des différences de comportement du formulaire, notamment si vous
tentez de déboguer un script qui définit la cible d'action sur un objet de votre formulaire. Il est préférable d'utiliser console.println pour
générer le texte dans la console JavaScript depuis Acrobat afin de déboguer un formulaire.
Messages d'avertissement et de validation de la palette Rapport dans Designer ES2
La palette Rapport envoie des messages d'avertissement et de validation qui vous aident à déboguer un formulaire à mesure que vous le
concevez. L'onglet Avertissement répertorie les erreurs ou les messages généré(e)s par Designer ES2 à mesure que vous créez un formulaire.
L'onglet Journal affiche les erreurs et les messages suivants :
•
•
•
Messages de validation
Erreurs d'exécution de script JavaScript ou FormCalc
Erreurs de rendu du formulaire au moment de sa conception générées lorsque vous importez ou enregistrez un formulaire ou lorsque
vous le prévisualisez dans l'onglet Aperçu PDF.
Pour plus d'informations sur l'utilisation de la palette Rapport, voir la rubrique « Utilisation de l'espace de travail pour le débogage des
calculs et des scripts » à la page 16.
Affichage d'informations de débogage à l'aide de la méthode messageBox
La méthode messageBox du modèle d'objet de formulaire XML permet d'extraire des informations d'un formulaire interactif dans une boîte
de dialogue au moment de l'exécution. Vous pouvez utiliser cette méthode pour afficher les messages ou les valeurs de champs au moment
de l'exécution. Une fois lancée, la méthode messageBox se charge d'afficher une valeur de chaîne dans une nouvelle boîte de dialogue de
l'application client. Il peut s'agit, en l'occurrence, d'un message de texte que vous rédigez à des fins de débogage ou de la valeur de chaîne
de champs ou d'expressions.
Prenons un scénario dans lequel une simple conception de formulaire contient un seul champ numérique (NumericField1) et un bouton
(Button1). Dans ce cas, le calcul FormCalc et le script JavaScript génèrent chacun un message présentant du texte et la valeur actuellement
affichée dans le champ numérique. En ajoutant le calcul ou le script à l'événement click de l'objet de bouton, il est possible de présenter
de façon interactive la valeur du champ numérique dans une nouvelle boîte de dialogue en cliquant sur le bouton.
FormCalc
xfa.host.messageBox(Concat("La valeur de NumericField1 est : ",
NumericField1), "Débogage", 3)
JavaScript
xfa.host.messageBox("La valeur de NumericField1 est : " +
NumericField1.rawValue, "Débogage", 3);
Attention : la méthode messageBox renvoie un nombre entier représentant le bouton que la personne remplissant le formulaire sélectionne dans
la boîte de dialogue du message. Si vous associez la méthode messageBox à l'événement calculate d'un objet de champ et que la méthode
messagebox est la dernière ligne du script, le champ affiche la valeur renvoyée par la méthode messageBox au moment de l'exécution.
LIVECYCLE DESIGNER ES2 73
Débogage des calculs et des scripts
LiveCycle Designer ES2 Scripting Basics
Extraire des informations dans un champ de texte
Vous pouvez extraire des informations (ex. : valeurs de champs ou messages) dans un champ de texte sur votre conception de formulaire.
Par exemple, vous pouvez ajouter de nouveaux messages ou de nouvelles valeurs à la valeur d'un champ de texte afin de créer un journal que
vous pourrez consulter régulièrement.
Débogage JavaScript
Si vous utilisez le langage JavaScript pour un script, vous pouvez utiliser la fonction console.println("string") pour extraire des
informations dans la console JavaScript disponible dans Acrobat Professional. Vous pouvez également utiliser la méthode alert du modèle
d'objet JavaScript d'Acrobat pour déboguer JavaScript.
JavaScript Debugger dans Acrobat Professional
Le JavaScript Debugger dans Acrobat Professional permet de tester les scripts JavaScript. Cet outil inclut la console JavaScript qui permet
de tester des parties du code JavaScript dans l'onglet Aperçu PDF. Cette console fournit une interface interactive et pratique pour contrôler
des parties de code JavaScript et travailler sur les propriétés et méthodes d'objets. La console JavaScript Console est interactive : elle se
comporte donc comme un éditeur permettant l'exécution de lignes uniques ou de blocs de code.
Pour activer JavaScript Debugger pour Designer ES2 et exécuter du code depuis la console JavaScript, vous devez activer JavaScript et
JavaScript Debugger dans Acrobat Professional.
Remarque : pous pouvez activer JavaScript Debugger dans Adobe Reader si vous avez installé Reader Extensions ES2. Pour activer JavaScript
Debugger dans Adobe Reader, vous devez ouvrir le fichier debugger.js et modifier le registre Microsoft Windows. Pour plus de détails sur
JavaScript Debugger dans Adobe Reader, voir Developing Acrobat Applications Using JavaScript (en anglais uniquement).
Pour activer JavaScript Debugger pour Designer ES2
1
Lancez Designer ES2.
2
Lancez Acrobat Professional.
3
Dans Acrobat Professional, choisissez Edition > Préférences.
4
Sélectionnez JavaScript dans la liste située à gauche.
5
Sélectionnez l’option d’activation d’Acrobat JavaScript si besoin est.
6
Dans JavaScript Debugger, sélectionnez l’option indiquant qu’il faut activer JavaScript Debugger après le redémarrage d’Acrobat.
7
Sélectionnez l'option d'activation de la console interactive. Cette option vous permet d'évaluer le code que vous écrivez dans la console
JavaScript Console.
8
Sélectionnez l'option d'affichage de la console lors d'erreurs et de messages. Cette option vous assure que la console affichera des
informations utiles dès que vous ferez des erreurs.
9
Cliquez sur OK pour fermer la boîte de dialogue Préférences.
10 Quitte Acrobat Professional.
11 Dans Designer ES2, cliquez sur l'onglet Aperçu PDF.
12 Appuyez sur Ctrl+J pour ouvrir JavaScript Debugger.
Pour maintenir ouvert JavaScript Debugger dans Designer ES2
Si l'outil JavaScript Debugger est actif dans Acrobat et qu'il disparaît dès que vous cliquez sur des composants dans l'interface de
Designer ES2, vous devez arrêter le processus Acrobat.exe dans le Gestionnaire des tâches de Microsoft Windows. Le processus Acrobat.exe
continue de s'exécuter après la fermeture d'Acrobat de manière à ce qu’Acrobat puisse s'ouvrir plus vite en cas de redémarrage. L'interruption
du processus met fin à l'association entre JavaScript Debugger et la session Acrobat Professional, ce qui permet d'utiliser JavaScript
Debugger dans Designer ES2.
1
Dans le Gestionnaire des tâches de Windows, cliquez sur l'onglet Processus.
2
Dans la colonne Nom de l'image, cliquez avec le bouton droit de la souris sur Acrobat.exe et choisissez Terminer le processus.
LIVECYCLE DESIGNER ES2 74
Débogage des calculs et des scripts
LiveCycle Designer ES2 Scripting Basics
Evaluation du code à l'aide de la console JavaScript
Il existe trois manières d'évaluer une seule ou plusieurs lignes de code à l'aide de la console JavaScript à partir de Acrobat.
Pour évaluer une partie d'une ligne de code
❖ Mettez en surbrillance la partie dans la fenêtre de la console et appuyez sur la touche Entrée du pavé numérique ou sur les touches
Ctrl+Enter du clavier normal.
Pour évaluer une seule ligne de code
❖ Placez le curseur sur la ligne souhaitée dans la fenêtre de la console et appuyez sur la touche Enter du pavé numérique ou sur les touches
Ctrl+Enter du clavier normal.
Pour évaluer plusieurs lignes de code
❖ Mettez ces lignes en surbrillance dans la fenêtre de la console et appuyez sur la touche Entrée du pavé numérique ou sur les touches
Ctrl+Enter du clavier normal.
Pour supprimer le contenu affiché dans la console JavaScript
❖ Cliquez sur Effacer dans la fenêtre de la console.
Le résultat de la dernière instruction JavaScript évaluée s'affiche dans la fenêtre de la console.
Après l'évaluation de chaque script JavaScript, la fenêtre de console imprime undefined, c'est-à-dire la valeur renvoyée de l'instruction.
Notez que le résultat d'une instruction est différent de la valeur d'une expression dans l'instruction. La valeur renvoyée undefined ne
signifie pas que la valeur du script est indéterminée : elle indique que la valeur retournée de l'instruction JavaScript est indéterminée.
Affichage d'informations de débogage dans la console JavaScript
Si vous créez des scripts à l'aide de JavaScript, vous pouvez envoyer les messages de sortie vers la console JavaScript à partir d'Acrobat au
moment de l'exécution. Pour ce faire, utilisez la méthode console.println répertoriée dans le modèle d'objet JavaScript d'Acrobat.
Lorsqu'elle est exécutée, la méthode console.println affiche une valeur de chaîne dans la console JavaScript. Il peut s'agit, en l'occurrence,
d'un message de texte que vous rédigez à des fins de débogage ou de la valeur de chaîne de champs ou d'expressions.
Prenons par exemple une simple conception de formulaire contenant un seul champ numérique (NumericField1) et un bouton (Button1).
Dans ce cas, le script JavaScript suivant génère un message présentant du texte et la valeur actuellement affichée dans le champ numérique.
En ajoutant le calcul ou le script à l'événement click de l'objet de bouton, il est possible de présenter de façon interactive la valeur du champ
numérique dans une nouvelle boîte de dialogue en cliquant sur le bouton.
console.println("La valeur est : " + NumericField1.rawValue);
Pour plus d'informations sur la méthode console.println et le modèle d'objet JavaScript d'Acrobat, voir la rubrique Developing Acrobat
Applications Using JavaScript (en anglais uniquement).
Pour plus de détails sur JavaScript Console et JavaScript Debugger, voir Developing Acrobat Applications Using JavaScript (en anglais
uniquement).
Affichage d'informations de débogage à l'aide de la méthode alert
Si vous souhaitez renvoyer une zone de message lors d'un événement calculate, vous pouvez utiliser la méthode alert du modèle d'objet
JavaScript à partir d'Acrobat. Le script suivant renvoie, par exemple, la valeur d'un champ de texte :
var oField = xfa.resolveNode("TextField1").rawValue;
app.alert(oField);
Pour plus d'informations sur la méthode alert et le modèle d'objet JavaScript d'Acrobat, voir la rubrique Developing Acrobat Applications
Using JavaScript (en anglais uniquement).
LIVECYCLE DESIGNER ES2 75
Débogage des calculs et des scripts
LiveCycle Designer ES2 Scripting Basics
Conseils pour le débogage
Suivez les conseils ci-dessous pour déboguer des calculs ou des scripts.
Données d'exemple
Pensez à spécifier un fichier de données d'aperçu dans la boîte de dialogue Propriétés du formulaire. Le fait de spécifier un fichier de données
d'aperçu n'enregistre pas les données dans le PDF final.
Gabarit
Pour déboguer un gabarit, placez un objet différent sur chaque gabarit pour savoir lequel est spécifié.
Première page d'un formulaire
Designer ES2 regarde au niveau du sous-formulaire racine pour déterminer à quelle page démarrer le formulaire. Si le sous-formulaire
racine ne permet pas de déterminer la première page, c'est le premier gabarit qui est utilisé par défaut.
Débogage incrémentiel
Pour déboguer une conception de formulaire, commencez par retirer des parties du formulaire jusqu'à ce que le problème ne se produise
plus. Essayez d'isoler la source du problème après avoir passé en revue chaque script et chaque propriété d'objet. Pour déboguer les sousformulaires, vous pouvez spécifier une bordure de couleur épaisse autour du sous-formulaire ou utiliser un remplissage Les couleurs et les
remplissages permettent d'indiquer quel sous-formulaire est utilisé ainsi que son étendue. Généralement, cette technique fonctionne bien
lorsqu'il s'agit de déterminer les limites d'un objet et la raison pour laquelle il est placé à un certain endroit.
Vue Hiérarchie
Visualisez votre conception de formulaire avec la vue Hiérarchie afin d'en avoir une meilleure perception. L'ordre des objets figurant dans
cette arborescence correspond à l'ordre dans lequel ils apparaissent sur la page. Certains objets, s'ils apparaissent en dessous d'autres objets,
ne peuvent pas être suivis.
Messages d'erreur relatifs aux scripts
Dans Designer ES2, les messages d'erreur relatifs aux scripts sont affichés dans l'onglet Journal de la palette Rapport en mode de
prévisualisation du formulaire. Si la conception de formulaire contient des scripts FormCalc et que l'erreur se produit sur le serveur, les
avertissements s'affichent dans l'onglet Journal. Si l'erreur de scripts FormCalc se produit sur le client, le message apparaît dans
Adobe Reader ou Acrobat.
Une erreur dans un script FormCalc empêche l'ensemble du script d'être exécuté.
En cas d'erreur dans un script JavaScript, celui-ci est exécuté jusqu'à ce qu'il atteigne l'erreur.
Erreurs de syntaxe dans FormCalc
Les erreurs de syntaxe dans FormCalc sont parfois difficiles à résoudre. Lorsque le message « Erreur de syntaxe près du jeton '%1', sur la
ligne %2, de la colonne %3 » apparaît, %1 contient généralement le jeton (mot) le plus près de l'erreur. Il se peut donc que le jeton soit correct
et qu'il n'ait rien à voir avec l'erreur, si ce n'est la proximité au problème. Par exemple, le script suivant génère l'erreur 7008 : « Erreur de
syntaxe près du jeton 'then', sur la ligne x de la colonne y ».
var b = abc(1)
if (b ne 1) then
//commentaire
Le problème vient du fait qu'il manque un jeton endif dans le script. Le dernier jeton correct est then (Les commentaires ne sont pas
considérés comme des jetons). L'ajout d'une instruction endif à la fin du script résout le problème.
LIVECYCLE DESIGNER ES2 76
Débogage des calculs et des scripts
LiveCycle Designer ES2 Scripting Basics
Fonctions définies dans un objet de script
Vous pouvez uniquement appeler une fonction définie dans un objet de script s'il s'agit d'un script JavaScript. Veillez à modifier le langage
de script en JavaScript dans l'éditeur de script. Si vous ne le faites pas, un message s'affichera indiquant que Designer ES2 n'est pas en mesure
de résoudre l'objet de script. La même erreur peut se produire lorsqu'une erreur de syntaxe se produit dans l'objet de script.
Opérations de services Web
Pour créer des opérations de services Web, utilisez l'événement postExecute pour voir ce qui a été renvoyé et si le service Web a généré des
messages d'erreur.
Expressions SOM longues
Pour taper une expression SOM longue à plusieurs calques, appuyez sur la touche Ctrl et cliquez sur l'objet dans la zone de travail. Cette
commande permet d'insérer l'expression SOM de l'objet dans le script. L'expression SOM dépend de l'objet hébergeant le script. Pour insérer
l'expression SOM absolue, appuyez sur Ctrl+Shift et cliquez sur l'objet. Ces commandes fonctionnent si vous cliquez sur les objets dans la
vue Conception et non dans la vue Hiérarchie.
Tester les expressions SOM
Si une expression SOM longue échoue, revenez à la racine de l'expression et testez chaque point avec className jusqu'à ce que vous
atteigniez le problème. Par exemple, testez a.b.c.d en démarrant à la racine :
•
•
•
•
console.println(a.className)
console.println(a.b.className)
console.println(a.b.c.className)
console.println(a.b.c.d.className)
Utiliser des objets de script pour déboguer des conceptions de formulaires
Utilisez un objet de script (un fragment par exemple) pour déboguer des conceptions de formulaire :
• Extrayez une hiérarchie de noeuds sous un noeud.
• Extrayez la valeur d'une propriété ou d'un attribut d'un noeud.
• Extrayez et regardez si le noeud a une propriété ou un attribut spécifié(e).
• Extrayez l'expression SOM d'un noeud.
• Extrayez le xml src d'un noeud donné.
Voici l'exemple d'un objet de script contenant plusieurs fonctions de débogage :
<script contentType="application/x-javascript" name="XFADEBUG">
//Cet objet de script contient plusieurs fonctions de traçage qui peuvent aider à déboguer une conception
de formulaire
//Extrayez une hiérarchie de noeuds vers console.println()
function printNode(node) {... }
//Extrayez l'expression SOM vers la fonction console.println() printSOM(node) {... }
//Extrayez la fonction de valeur de propriété ou d'attribut printValue(node, attrOrPropertyName) {...}
function printXMLSource(node) { ....}
function printHasPropertySpecified(node, prop) {...}\\
</script>
LIVECYCLE DESIGNER ES2 77
Débogage des calculs et des scripts
LiveCycle Designer ES2 Scripting Basics
Avertissements
•
Appeler xfa.layout.relayout(). sur le docReady even entraîne des problèmes, car l'événement docReady se déclenche à chaque
fois que la disposition est prête.
•
Placer un conteneur enchaîné à l'intérieur d'un conteneur positionné entraîne des problèmes de sauts de page, de chevauchement
d'objets et de répétition de sous-formulaires. Le sous-formulaire racine est un conteneur enchaîné. Utilisez-le et placez-y vos conteneurs
enchaînables en excluant les sous-formulaires une fois votre disposition terminée. Vous pouvez également définir l'enchaînement des
sous-formulaires sur Enchaîné.
•
Problème de page vierge (Acrobat 7.1 ou versions antérieures) Au moment de la conception, une page vierge s'affiche lorsque le sousformulaire ne rentre pas dans les limites de la zone de contenu. Pour supprimer cette page vierge, redimensionnez le sous-formulaire ou
divisez-le en plusieurs pages. Si l'ordinateur de l'utilisateur est équipé d'Acrobat 7.1 ou d'une version antérieure, le sous-formulaire de
deuxième niveau apparaît sur une autre page.
78
11. Utilisation d'une application hôte
L'application hôte est l'application qui héberge le formulaire à un moment donné.Si vous utilisez, par exemple, Formulaires ES2 pour générer
un formulaire au format HTML, lors du stage de pré-rendu, l'application hôte sera Formulaires ES2. Après avoir généré le formulaire, si vous
le visualisez dans une application client telle que Acrobat, Adobe Reader ou un navigateur HTML, c'est l'application client qui fait office
d'application hôte.
Designer ES2 inclut un modèle de script offrant des propriétés et des méthodes de création de script prévues pour interagir directement avec
une application hôte. Vous pouvez, par exemple, vous servir des propriétés et des méthodes du modèle de script hôte pour assurer des
actions de navigation dans les pages PDF dans Acrobat ou Adobe Reader, ou utiliser la méthode importData pour charger des données
dans votre formulaire.
Il est possible de faire référence à la syntaxe du modèle de script hôte dans tout événement de script valide pour les objets de conception de
formulaire utilisant la syntaxe suivante en langage FormCalc et JavaScript :
xfa.host.property_or_method
Propriétés et méthodes du modèle de script hôte
A l'aide des propriétés et des méthodes du modèle de script hôte, vous pouvez rechercher des informations et exécuter des actions qui ne
sont pas accessibles autrement par le biais de calculs et de scripts. Par exemple, vous pouvez rechercher le nom de l'application hôte (telle
que Acrobat), ou avancer la page actuelle sur un formulaire interactif. Le tableau suivant présente les propriétés et les méthodes disponibles
pour le modèle de script hôte.
Propriétés
Méthodes
appType
calculationsEnabled
currentPage
language
name
numPages
platform
title
validationsEnabled
variation
version
beep
exportData
gotoURL
importData
messageBox
pageDown
pageUp
print
resetData
response
setFocus
Pour plus d'informations au sujet des propriétés et des méthodes du modèle de script hôte, reportez-vous au LiveCycle ES2 Developer
Center accessible à l'adresse www.adobe.com/devnet/livecycle/.
LIVECYCLE DESIGNER ES2 79
Utilisation d'une application hôte
LiveCycle Designer ES2 Scripting Basics
Comparaison des fonctionnalités du modèle de script hôte
Le tableau suivant récapitule les propriétés et les méthodes du modèle de script hôte de Designer ES2 et les compare aux expressions
équivalentes dans le modèle d'objet JavaScript de Acrobat.
Pour plus d'informations sur les méthodes et propriétés du modèle de script hôte, consultez l'aide de Designer ES2 ou le Guide de référence
pour les scripts Designer ES2.
Propriétés et méthodes du modèle de script hôte
Equivalent du modèle d'objet JavaScript à partir d'Acrobat
xfa.host.appType
app.viewerType
xfa.host.beep( [ INTEGER param ] )
app.beep([ nType ])
xfa.host.currentPage
doc.pageNum
xfa.host.exportData([ STRING param1 [,
BOOLEAN param2 ] ])
doc.exportXFAData(cPath [, bXDP ])
xfa.host.gotoURL( STRING param1 )
doc.getURL(cURL, [ bAppend ])
ou
app.launchURL(URL);
xfa.host.importData( [ STRING param ] )
doc.importXFAData(cPath)
xfa.host.language
app.language
xfa.host.messageBox(STRING param1 [,
STRING param2 [, INTEGER param3 [,
INTEGER param4 ] ] ])
app.alert(cMsg [, nIcon [, nType [,
cTitle ] ] ])
xfa.host.name
Aucun
xfa.host.numPages
doc.numPages
xfa.host.pageDown()
doc.pageNum++
xfa.host.pageUp()
doc.pageNum--
xfa.host.platform
app.platform
xfa.host.print(BOOLEAN param1, INTEGER
param2, INTEGER param3, BOOLEAN
param4, BOOLEAN param5, BOOLEAN
param6, BOOLEAN param7, BOOLEAN
param8)
doc.print([ bUI [, nStart [, nEnd [,
bSilent [, bShrinkToFit [,
bPrintAsImage [, bReverse [,
bAnnotations ] ] ] ] ] ] ] ])
xfa.host.resetData( [ STRING param ] )
doc.resetForm([ aFields ])
xfa.host.response( STRING param1 [,
STRING param2 [, STRING param3 [,
BOOLEAN param4] ] ])
app.response(cQuestion [, cTitle [,
cDefault [, bPassword ] ] ])
xfa.host.setFocus( STRING param )
field.setFocus()
(Désapprouvé)
xfa.host.title
doc.title
xfa.host.variation
app.viewerVariation
xfa.host.version
app.viewerVersion
80
12. Utilisation du modèle d'événement
Le modèle d'événement sert à stocker les propriétés d'événement objet. Ces propriétés s'avèrent utiles pour accéder aux valeurs qui
sortiraient du cadre des événements présentés dans la liste Afficher de l'éditeur de script.
Le modèle d'événement contrôle les modifications dans un formulaire qui se produisent avant, pendant et après les actions, qu'il s'agisse
d'événements de formulaire dynamique (stade auquel les données et la conception de formulaire sont fusionnées et avant la pagination) ou
d'événements de formulaire interactif (moment auquel un utilisateur met à jour la valeur d'un champ).
Propriétés et méthodes du modèle d'événement
A l'aide des propriétés et des méthodes d'événement objet, vous pouvez rechercher des informations et exécuter des actions qui ne sont pas
accessibles autrement par le biais de calculs et de scripts. Par exemple, vous pouvez rechercher la valeur complète d'un champ qui ferait partie
des données retirées parce qu'elles sont trop longues ou invalides. L'extraction d'une valeur complète d'un champ est pratique lorsque vous
devez procéder à des vérifications extensives d'erreurs.
Propriétés
Méthodes
change
className
commitKey
fullText
keyDown
modifier
name
newContentType
newText
prevContentType
prevText
reenter
selEnd
selStart
shift
soapFaultCode
soapFaultString
target
emit
reset
Pour plus d'informations au sujet des propriétés et des méthodes du modèle de script d'événement, reportez-vous au Adobe Designer ES2
Developer Center accessible à partir de www.adobe.com/devnet/livecycle/designing_forms.html.
81
13. Conversion de scripts Acrobat en scripts
Designer ES2
Designer ES2 offre des fonctions de script étendues et prend même en charge les objets JavaScript les plus courants provenant d'Acrobat.
Lorsque vous convertissez un formulaire Acrobat au format Designer ES2, la plupart des scripts JavaScript continuent de fonctionner
normalement sans aucune modification. Il convient, cependant, de convertir manuellement certains scripts JavaScript provenant d'Acrobat
pour qu'ils se comportent de la même manière dans votre formulaire Acrobat.
Lors de la conversion de scripts sur votre formulaire Acrobat, notez les différences suivantes en matière de création de scripts dans
Designer ES2 et dans Acrobat :
Espace de travail Designer ES2 Dans l'espace de travail Designer ES2, il est possible de changer les propriétés et les comportements des
objets sur votre formulaire sans qu'il soit nécessaire de créer des scripts.
Langages de script Designer ES2 gère aussi bien le langage JavaScript que le langage FormCalc (langage de calcul simple). FormCalc offre
des fonctions intégrées permettant d'effectuer diverses opérations correspondant à des scripts complexes.
Référence aux objets, propriétés et méthodes Compte tenu de la nature très structurée des formulaires Designer ES2, il est nécessaire
d'inclure la syntaxe de référence appropriée dans votre script pour faire référence à des objets, propriétés ou méthodes spécifiques. Pour vous
faciliter la tâche, vous pouvez tirer parti des options d'exécution d'instructions dans l'éditeur de script.
Vous pouvez continuer à utiliser dans les objets, propriétés et méthodes JavaScript provenant d'Acrobat dans Designer ES2. Cependant, vous
devez considérer JavaScript à partir d'Acrobat uniquement pour des tâches que vous ne pouvez pas effectuer à l'aide d'un modèle d'objet de
formulaire XML dans Designer ES2. Servez-vous par exemple de JavaScript depuis Acrobat pour ajouter des pièces jointes, des signets et des
annotations, effectuer des recherches ou une vérification orthographique dans le formulaire, créer des rapports ou accéder à des
métadonnées et les manipuler. JavaScript dans Acrobat ne permet pas, en revanche, de définir des valeurs de champ, d'ajouter de nouveaux
champs dans un formulaire ou de supprimer des pages d'un formulaire.
Remarque : vous ne pouvez pas utiliser Acrobat pour ajouter des scripts JavaScript à un formulaire Designer ES2, y compris les formulaires
Acrobat que vous avez convertis à l'aide de Designer ES2. Lorsque vous affichez un formulaire Designer ES2 dans Acrobat, vous avez accès à
aucun des outils JavaScript.
Pour plus de détails sur la conversion de scripts Acrobat sous Designer ES2, voir l'article Converting Acrobat JavaScript for Use in
Designer ES2 Forms (Conversion de scripts Acrobat JavaScript pour utilisation dans des formulaires) figurant sur le site LiveCycle ES2
Developer Center.
Conversion de formulaires Acrobat contenant des scripts
L'une des premières choses à faire lorsque vous décidez de convertir un formulaire Acrobat sous Designer ES2 est de déterminer la
proportion des scripts Acrobat prise en charge par Designer ES2 et à évaluer le nombre de scripts à convertir.
En règle générale, il est conseillé de convertir tous les scripts Acrobat sous leur forme équivalente dans Designer ES2. Les scripts
Designer ES2 tirent pleinement parti de la nature hautement structurée des formulaires Designer ES2, ainsi que des caractéristiques propres
aux formulaires. La conception et la mise en oeuvre de votre solution de formulaire n'en est que plus aisée et rapide.
Les scripts Acrobat à préserver sont ceux qui ont trait à l'environnement du formulaire et aux opérations périphériques (telles que l'ajout de
pièces jointes ou de contenu multimédia, l'exécution de recherches ou la création de rapports et le traitement des métadonnées).
Pour plus de détails sur la conversion de scripts Acrobat en scripts Designer ES2, voir l'article Converting Acrobat JavaScript for Use in
Designer ES2 Forms sur le site Designer ES2 Developer Center.
LIVECYCLE DESIGNER ES2 82
Conversion de scripts Acrobat en scripts Designer ES2
LiveCycle Designer ES2 Scripting Basics
Utilisation d'objets JavaScript d'Acrobat dans Designer ES2
Dans Designer ES2, vous pouvez appliquer des scripts à certains objets JavaScript dans Acrobat en faisant appel à la syntaxe de script
d'Acrobat. Il est donc possible d'utiliser les propriétés et les méthodes de ces objets sur votre formulaire. Par exemple, si vous voulez afficher
un message dans la console JavaScript à partir d'Acrobat, vous pouvez ajouter le script suivant à l'événement d'un objet de conception de
formulaire dans Designer ES2 :
console.println("Ce message s'affiche dans la console JavaScript.");
Vous pouvez également demander la transmission du formulaire par messagerie en ajoutant le script suivant à l'événement click d'un
bouton :
var myDoc = event.target;
myDoc.mailDoc(true);
Remarque : dans Designer ES2, vous devez vous assurer de choisir le langage JavaScript pour l'événement afin que le script soit exécuté
correctement.
Vous pouvez utiliser également des références dans les objets JavaScript d'Acrobat dans votre syntaxe de référence. Par exemple, le script
suivant extrait l’état signé d’un champ de signature, puis exécute une action en fonction de l’état récupéré :
// Continuez si le champ actif n'est pas signé.
var oState =
event.target.getField("form1[0].#subform[0].SignatureField1[0]")
.signatureValidate(); //Extrait l'état signé du champ.
if (oState == 0) {
...
}
Remarque : cet exemple utilise une syntaxe de référence complète pour référencer le texte. Pour plus d'informations sur le référencement des
objets de conception de formulaire, voir « Référence aux propriétés et aux valeurs d'objet » à la page 60.
Lorsque vous travaillez avec JavaScript à partir d'Acrobat dans Designer ES2, tenez compte des points suivants :
•
Dans Designer ES2, utilisez event.target pour accéder à l'objet JavaScript Doc à partir d'Acrobat. Dans Acrobat, l'objet this sert à
référencer l'objet Doc. Cependant, dans Designer ES2, l'objet this fait référence à l'objet de conception de formulaire auquel le script
est attaché.
•
L'éditeur de script ne comporte pas de fin d’exécution des instructions pour les objets JavaScript à partir d'Acrobat. Voir JavaScript for
Acrobat API Reference.
•
La méthode Doc event.target.importTextData("file.txt") n'est pas prise en charge pour les formulaires dynamiques XFA qui
ont été certifiés.
Pour plus de détails sur la conversion de scripts Acrobat en scripts Designer ES2, voir l'article Converting Acrobat JavaScript for Use in
Designer ES2 Forms sur le site LiveCycle ES2 Developer Center.
Objets JavaScript d'Acrobat pris en charge dans Designer ES2
Le tableau suivant répertorie les objets, les propriétés et les méthodes Acrobat les plus fréquemment utilisés dans Designer ES2 et décrit les
fonctions équivalentes dans Designer ES2. Bien que le tableau présente la plupart des objets, propriétés et méthodes Acrobat, ceux qui sont
rarement utilisés dans les formulaires (comme les objets multimédia) ont été volontairement omis.
Lorsqu'aucune fonctionnalité Designer ES2 équivalente n'est citée, cela signifie qu'il n'existe pas de propriété ou méthode Designer ES2
directe pour reproduire le comportement d'Acrobat. Il est toujours possible, cependant, de créer des fonctions ou des scripts personnalisés
pour obtenir le résultat de la fonction Acrobat.
LIVECYCLE DESIGNER ES2 83
Conversion de scripts Acrobat en scripts Designer ES2
JavaScript dans Acrobat
LiveCycle Designer ES2 Scripting Basics
Prise en charge
de Designer ES2
Equivalent JavaScript
dans Designer ES2
Commentaires
Oui
Aucun
Seuls les formulaires avec une disposition fixe prennent
en charge le calque des annotations.
calculate
Non
Aucun
Designer ES2 inclut la méthode execCalculate qui
déclenche l'événement calculate.
language
Oui
xfa.host.language
Voir la propriété language.
monitors
Oui
Aucun
platform
Oui
xfa.host.platform
plugins
Oui
Aucun
toolbar
Oui
Aucun
viewerType
Oui
xfa.host.appType
Voir la propriété appType.
viewerVariation
Oui
xfa.host.variation
Voir la propriété variation.
viewerVersion
Oui
xfa.host.version
Voir la propriété version.
addMenuItem
Oui
Aucun
addSubMenu
Oui
Aucun
addToolButton
Oui
Aucun
alert
Oui
xfa.host.messageBox()
Voir la méthode messageBox.
beep
Oui
xfa.host.beep()
Voir la méthode beep.
browseForDoc
Oui
Aucun
clearInterval
Oui
Aucun
clearTimeOut
Oui
Aucun
execDialog
Oui
Aucun
execMenuItem
Oui
Aucun
getNthPluginName
Oui
Aucun
getPath
Oui
Aucun
goBack
Oui
Aucun
goForward
Oui
Aucun
hideMenuItem
Oui
Aucun
hideToolbarButton
Oui
Aucun
launchURL
Oui
Aucun
Propriétés et méthodes d'objet Annot
Toutes les propriétés et les méthodes
app propriétés de l’objet
Voir la propriété platform.
app méthodes d'objet
Exécute la commande de menu spécifiée. Utilisez cette
méthode dans Designer ES2 pour les commandes du
menu Fichier.
Designer ES2 inclut la méthode gotoURL qui charge
une URL spécifique dans l'application client, telle
qu'Acrobat ou Adobe Reader.
LIVECYCLE DESIGNER ES2 84
Conversion de scripts Acrobat en scripts Designer ES2
LiveCycle Designer ES2 Scripting Basics
JavaScript dans Acrobat
Prise en charge
de Designer ES2
Equivalent JavaScript
dans Designer ES2
listMenuItems
Oui
Aucun
listToolbarButtons
Oui
Aucun
mailGetAddrs
Oui
Aucun
mailMsg
Oui
Aucun
newDoc
Oui
Aucun
newFDF
Non
Aucun
openDoc
Oui
Aucun
openFDF
Non
Aucun
popUpMenuEx
Oui
Aucun
popUpMenu
Oui
Aucun
removeToolButton
Oui
Aucun
response
Oui
xfa.host.response()
setInterval
Oui
Aucun
setTimeOut
Oui
Aucun
trustedFunction
Oui
Aucun
trustPropagatorFunction
Oui
Aucun
Commentaires
Cette méthode ne peut être exécutée que lors des
événements de traitement par lot, de console ou de
menu.
Voir la méthode response.
Cette méthode est disponible uniquement lors de
l'initialisation du traitement par lot, de la console et de
l'application.
Propriétés et méthodes d'objet de signet
Toutes les propriétés et les méthodes
Oui
Aucun
author
Oui
Aucun
baseURL
Oui
Aucun
bookmarkRoot
Oui
Aucun
calculate
Non
Aucun
dataObjects
Oui
Aucun
delay
Non
Aucun
dirty
Oui
Aucun
doc propriétés de l’objet
Ce script Javascript pour Designer ES2 a pour effet
d'enregistrer une copie d'un formulaire et de vérifier si
le formulaire a changé :
var sOrigXML = xfa.data.saveXML;
if (sOrigXML != xfa.data.saveXML)
{...}
disclosed
Oui
Aucun
documentFileName
Oui
Aucun
LIVECYCLE DESIGNER ES2 85
Conversion de scripts Acrobat en scripts Designer ES2
LiveCycle Designer ES2 Scripting Basics
JavaScript dans Acrobat
Prise en charge
de Designer ES2
Equivalent JavaScript
dans Designer ES2
dynamicXFAForm
Oui
Aucun
external
Oui
Aucun
filesize
Oui
Aucun
hidden
Oui
Aucun
icons
Oui
Aucun
keywords
Oui
Aucun
layout
Oui
Aucun
media
Oui
Aucun
metadata
Oui
xfa.form.desc
modDate
Oui
Aucun
mouseX
mouseY
Oui
Aucun
noautocomplete
Oui
Aucun
nocache
Oui
Aucun
numFields
Oui
xfa.layout.pageContent()
La méthode pageContent renvoie une liste de tous
les objets d'un type particulier. Cependant, vous devez
exécuter la méthode pour les vues de conception et les
gabarits afin de numériser la totalité du formulaire.
numPages
Oui
xfa.host.numPages
La propriété numPages renvoie le nombre de pages
du formulaire fini dans le client. Voir également les
méthodes absPageCount et pageCount.
ou
Commentaires
Voir l'objet desc.
xfa.layout.absPageCount()
xfa.layout.pageCount()
pageNum
Oui
xfa.host.currentPage
Voir la propriété currentPage.
pageNum--
Oui
xfa.host.currentPage--
Voir la propriété currentPage ou la méthode
ou
pageUp.
xfa.host.pageUp()
pageNum++
Oui
xfa.host.currentPage++
Voir la propriété currentPage ou la méthode
ou
pageDown.
xfa.host.pageDown()
path
Oui
Aucun
securityHandler
Oui
Aucun
templates
Non
Aucun
Utilisez les objets de sous-formulaire dans Designer ES2
et servez-vous des propriétés et des méthodes pour
ajouter, supprimer, déplacer et configurer les instances
de sous-formulaire.
title
Oui
xfa.host.title
Voir la propriété title.
Oui
Aucun
doc méthodes d'objet
addAnnot
LIVECYCLE DESIGNER ES2 86
Conversion de scripts Acrobat en scripts Designer ES2
LiveCycle Designer ES2 Scripting Basics
JavaScript dans Acrobat
Prise en charge
de Designer ES2
Equivalent JavaScript
dans Designer ES2
Commentaires
addField
Non
Aucun
Vous devez utiliser impérativement des formulaires
avec une disposition fixe dans Designer ES2, puis utiliser
l'objet instanceManager pour ajouter, supprimer et
configurer le nombre des instances d'un objet
particulier.
addIcon
Oui
Aucun
addLink
Non
Aucun
addRecipientListCryptFilter
Oui
Aucun
addScript
Oui
Aucun
addThumbnails
Non
Aucun
addWatermarkFromFile
Oui
Aucun
addWatermarkFromText
Oui
Aucun
addWeblinks
Oui
Aucun
appRightsSign
Oui
Aucun
appRightsValidate
Oui
Aucun
bringToFront
Oui
Aucun
calculateNow
Non
xfa.form.recalculate(1);
ou
execCalculate()
La méthode recalculate force l'exécution d'un jeu
spécifique de scripts sur des événements calculate
à lancer. La valeur booléenne indique si la condition est
vraie (True (par défaut) - tous les scripts de calcul sont
exécutés) ou fausse (False - seuls les scripts de calcul
en attente sont exécutés).
L'objet Designer ES2 calculate contrôle si la
personne remplissant le formulaire peut écraser ou non
la valeur calculée d'un champ.
Vous pouvez également utiliser la méthode
execCalculate pour chaque objet pour lequel vous
souhaitez forcer la répétition des calculs.
closeDoc
Oui
Aucun
createDataObject
Oui
Aucun
createTemplate
Non
Aucun
Les formulaires Designer ES2 n'ont pas d'équivalent en
ce qui concerne le concept de modèle Acrobat. Vous
devez utiliser des objets de sous-formulaire dans
Designer ES2.
deletePages
Non
Aucun
Dans Designer ES2, vous pouvez utiliser l'objet
instanceManager pour supprimer l'objet de sousformulaire représentant une page de votre formulaire.
embedDocAsDataObject
Oui
Aucun
encryptForRecipients
Oui
Aucun
encryptUsingPolicy
Oui
Aucun
LIVECYCLE DESIGNER ES2 87
Conversion de scripts Acrobat en scripts Designer ES2
LiveCycle Designer ES2 Scripting Basics
JavaScript dans Acrobat
Prise en charge
de Designer ES2
Equivalent JavaScript
dans Designer ES2
Commentaires
exportAsText
Oui
Aucun
Cette méthode est uniquement disponible dans la
console JavaScript de l'outil JavaScript Debugger dans
Acrobat ou au cours d'un traitement par lot.
exportAsFDF
Non
xfa.host.exportData()
La méthode exportData exporte un fichier XML ou
XDP au lieu d'un fichier FDF.
exportAsXFDF
Non
xfa.host.exportData()
La méthode exportData exporte un fichier XML ou
XDP au lieu d'un fichier FDF.
exportDataObject
Oui
Aucun
exportXFAData
Non
xfa.host.exportData()
extractPages
Non
Aucun
flattenPages
Oui
Aucun
getAnnot
Oui
Aucun
getAnnots
Oui
Aucun
getDataObjectContents
Oui
Aucun
getField("FieldName")
Oui
xfa.resolveNode
("FieldName")
getLegalWarnings
Oui
Aucun
getLinks
Non
Aucun
getNthFieldName
Oui
Vous devez effectuer une boucle à travers
tous les objets ayant un nom de classe
similaire jusqu'à ce que vous atteigniez la
nth occurrence.
getNthTemplate
Non
Aucun
getOCGs
Oui
Aucun
getOCGOrder
Oui
Aucun
getPageBox
Oui
Aucun
getPageLabel
Oui
Aucun
getPageNthWord
Oui
Aucun
getPageNthWordQuads
Oui
Aucun
getPageNumWords
Oui
Aucun
getPageRotation
Oui
Aucun
getPrintParams
Oui
Aucun
getTemplate
Non
Aucun
getURL
Oui
xfa.host.gotoURL(
"http://www.adobe.com");
gotoNamedDest
Non
Aucun
importAnFDF
Non
Aucun
La méthode exportData exporte un fichier XML ou
XDP au lieu d'un fichier FDF.
La méthode resolveNode accède à l'objet spécifié
dans le fichier XML source du formulaire.
Voir la propriété className.
Voir la méthode gotoURL.
LIVECYCLE DESIGNER ES2 88
Conversion de scripts Acrobat en scripts Designer ES2
LiveCycle Designer ES2 Scripting Basics
JavaScript dans Acrobat
Prise en charge
de Designer ES2
Equivalent JavaScript
dans Designer ES2
importAnXFDF
Oui
Aucun
importDataObject
Oui
Aucun
importIcon
Oui
Aucun
importTextData
Oui
Aucun
importXFAData
Non
xfa.host.importData
("filename.xdp");
insertPages
Non
Aucun
mailDoc
Oui
Aucun
mailForm
Non
Aucun
movePage
Non
Aucun
newPage
Non
Aucun
openDataObject
Oui
Aucun
print
Oui
xfa.host.print();
removeDataObject
Oui
Aucun
removeField
Non
Aucun
removeIcon
Oui
Aucun
removeLinks
Non
Aucun
removeScript
Oui
Aucun
removeTemplate
Non
Aucun
removeThumbnails
Non
Aucun
removeWeblinks
Oui
Aucun
replacePages
Non
Aucun
resetForm
Non
xfa.host.resetData()
ou
xfa.event.reset()
saveAs
Oui
Aucun
Commentaires
Voir la méthode importData.
Voir la méthode print.
La méthode resetData ramène toutes les valeurs des
champs d'un formulaire à leurs valeurs par défaut. La
méthode reset rétablit toutes les propriétés au sein
d'un modèle d'événement.
Dans Designer ES2, le fichier doit être enregistré au
niveau de l'application. Ces scripts sont des exemples
d'enregistrement au niveau de application :
app.executeMenuItem
("SaveAs");
ou
var myDoc = event.target; myDoc.saveAs();
spawnPageFromTemplate
Non
Aucun
setAction
Non
Aucun
setPageLabel
Oui
Aucun
setPageRotation
Non
Aucun
LIVECYCLE DESIGNER ES2 89
Conversion de scripts Acrobat en scripts Designer ES2
LiveCycle Designer ES2 Scripting Basics
JavaScript dans Acrobat
Prise en charge
de Designer ES2
Equivalent JavaScript
dans Designer ES2
Commentaires
setPageTabOrder
Non
Aucun
Dans Designer ES2, choisissez Edition > Ordre de
tabulation pour définir l'ordre de tabulation.
setScript
Non
Aucun
submitForm
Oui
Utilisez l'un des objets de bouton d'envoi
dans Designer ES2.
change
Oui
xfa.event.change
Voir la propriété change.
targetName
Oui
xfa.event.target
Voir la propriété target.
comb
Non
Aucun
charLimit
Non
this.value.#text.maxChars
Dans les formulaires ayant une disposition fixe, le
nombre limite de caractères peut être défini dans
l'espace de travail Designer ES2. Vous pouvez
configurer des champs sur les formulaires prévus pour
évoluer en fonction du volume de données.
display = display.noView
Non
Voir « Modification de la visibilité d'un
objet de conception de formulaire » à la
page 109.
Vous pouvez également définir la propriété presence
dans l'espace de travail Designer ES2.
Voir « Modification de la visibilité d'un
objet de conception de formulaire » à la
page 109.
Vous pouvez également définir la propriété presence
dans l'espace de travail Designer ES2.
event propriétés de l’objet
field propriétés de l’objet
display = display.noPrint
Non
Vous ne pouvez pas utiliser l'événement prePrint
pour modifier la présence d'un objet avant impression.
Vous ne pouvez pas utiliser l'événement prePrint
pour modifier la présence d'un objet avant impression.
defaultValue
Non
Aucun
Définissez la valeur de champ par défaut dans l'espace
de travail Designer ES2.
exportValues
Non
Aucun
Définissez la valeur d'exportation dans l'espace de
travail Designer ES2.
fillColor
Non
xfa.form.Form1.
NumericField1.fillColor
Voir la propriété fillColor.
hidden
Non
this.presence = "invisible"
this.
presence = "visible"
Vous pouvez également définir la propriété presence
dans l'espace de travail Designer ES2.
multiline
Non
this.ui.textEdit.multiLine
= "1";
Voir la propriété multiLine.
password
Non
Aucun
Designer ES2 contient un champ de mot de passe
utilisable sur un formulaire.
page
Non
Aucun
Ne s'applique pas aux formulaires Designer ES2.
print
Non
this.relevant = "-print";
Voir la propriété relevant.
radiosInUnison
Non
Aucun
Les boutons radio en groupes dans Designer ES2 sont
mutuellement exclusifs par défaut.
LIVECYCLE DESIGNER ES2 90
Conversion de scripts Acrobat en scripts Designer ES2
LiveCycle Designer ES2 Scripting Basics
JavaScript dans Acrobat
Prise en charge
de Designer ES2
Equivalent JavaScript
dans Designer ES2
Commentaires
rect
Oui
Vous pouvez obtenir la hauteur et la
largeur d'un champ de formulaire
Designer ES2 à l'aide de la syntaxe de
référence suivante :
Voir les propriétés h, w, x et y.
this.h;
this.w;
Vous pouvez également obtenir les
coordonnées x et y d'un objet à l'aide de la
syntaxe de référence suivante :
this.x;
this.y;
required
Non
this.mandatory = "erreur";
Voir les propriétés mandatory et nullTest.
ou
this.validate.nullTest =
"erreur";
textColor
Non
this.fontColor
Voir la propriété fontColor.
textSize
Non
this.font.size
Voir la propriété size.
textFont
Non
this.font.typeface
Voir la propriété typeface.
value
Non
this.rawValue
Voir la propriété rawValue.
Les champs Designer ES2 ont une propriété value ;
celle-ci n'est pas équivalente à la propriété Acrobat
value.
field méthodes d'objet
clearItems
Non
DropDownList1.clearItems();
La méthode clearItems s'applique uniquement aux
objets de liste déroulante et aux objets de zones de liste
dans Designer ES2.
deleteItemAt
Non
Aucun
getItemAt
Non
Aucun
insertItemAt
Non
DropDownList1.addItem(
.....)
Voir la méthode addItem.
isBoxChecked
Non
if(CheckBox1.rawValue
== 1)....
Voir la propriété rawValue.
isDefaultChecked
Non
Aucun
setAction
Non
Aucun
Ne s'applique pas aux formulaires Designer ES2.
setFocus
Oui
xfa.host.setFocus
("TextField1.somExpression")
La méthode setFocus exige que l'objet spécifié ait un
nom unique par rapport aux autres objets de votre
formulaire.
setItems
Non
Aucun
setLock
Oui
Aucun
signatureGetModifications
Oui
Aucun
signatureGetSeedValue
Oui
Aucun
signatureInfo
Oui
Aucun
LIVECYCLE DESIGNER ES2 91
Conversion de scripts Acrobat en scripts Designer ES2
LiveCycle Designer ES2 Scripting Basics
JavaScript dans Acrobat
Prise en charge
de Designer ES2
Equivalent JavaScript
dans Designer ES2
signatureSetSeedValue
Oui
Aucun
signatureSign
Oui
Aucun
signatureValidate
Oui
Aucun
Oui
Aucun
Oui
Aucun
Commentaires
search méthode d'objet
search.query("<your text>");
SOAP méthode d'objet
Toutes les propriétés et les méthodes
La syntaxe FormCalc abrégée (..) vous permet de
rechercher des objets au sein du modèle d'objet de
formulaire XML.
92
14. Exemples de tâches de script courantes
Ce chapitre contient des exemples d'utilisation de scripts JavaScript pour l'exécution de tâches et l'obtention de résultats spécifiques. Au
départ, plusieurs exemples seront inclus en fonction du contenu publié sur le site Designer ES2 Developer Center. Par la suite, d'autres
exemples pourront être ajoutés lors de mises à jour de ce guide.
Les exemples inclus pour la première version du guide sont les suivants :
• « Modification des couleurs d'arrière-plan des champs, des zones remplissables et des sous-formulaires » à la page 92
• « Masquage et affichage d'objets » à la page 94
• « Exclure un objet de l'ordre de tabulation » à la page 98
• « Modification des propriétés visuelles d'un objet sur le client » à la page 99
• « Obtention de la valeur actuelle ou de la valeur précédente d'une liste déroulante » à la page 102
• « Préserver le format en texte enrichi lors de la copie de valeurs de champs » à la page 103
• « Ajustement de la hauteur d'un champ au moment de l'exécution » à la page 103
• « Définition d'une valeur de champ obligatoire au moment de l'exécution » à la page 104
• « Calcul des sommes d'un champ » à la page 104
• « Mise en surbrillance des champs en réponse aux interactions de l'utilisateur final » à la page 105
• « Réinitialisation des valeurs du sous-formulaire actif » à la page 109
• « Modification de la visibilité d'un objet de conception de formulaire » à la page 109
• « Utilisation des propriétés du gestionnaire d'instances pour contrôler les sous-formulaires » à la page 111
• « Utilisation des méthodes du gestionnaire d'instances pour contrôler les sous-formulaires » à la page 112
• « Utilisation du gestionnaire d'instances pour contrôler les sous-formulaires au moment de l'exécution » à la page 114
Les exemples de script vous proposent des techniques rapides et simples que vous pouvez appliquer à vos travaux personnels.
Pour obtenir davantage d'exemples et d'idées, visitez le site Web de LiveCycle ES2 Developer Center à l'adresse suivante :
www.adobe.com/devnet/livecycle.
Modification des couleurs d'arrière-plan des champs, des zones remplissables et des sous-formulaires
Cet exemple vous montre comment modifier la couleur d'arrière-plan des sous-formulaires, des champs et des zones remplissables en
réponse aux interactions de l'utilisateur final au moment de l'exécution.
LIVECYCLE DESIGNER ES2 93
Exemples de tâches de script courantes
LiveCycle Designer ES2 Scripting Basics
Dans cet exemple, un simple clic sur un bouton permet de modifier la couleur d'arrière-plan de l'objet associé.
Remarque : pour pouvoir modifier la couleur d'arrière-plan des objets au moment de l'exécution, vous devez enregistrer votre formulaire comme
formulaire XML dynamique Acrobat.
Pour visualiser cet exemple de script et en obtenir d'autres, visitez le site Web de LiveCycle ES2 Developer Center à l'adresse suivante :
www.adobe.com/devnet/livecycle.
Script pour les couleurs d'arrière-plan des sous-formulaires et des champs de texte
Pour définir les couleurs d'arrière-plan des sous-formulaires et des champs de texte, utilisez la méthode fillColor. Par exemple, la ligne
suivante constitue le script pour les sous-formulaires :
Subform1.fillColor = "17,136,255";
Les lignes suivantes constituent le script pour la couleur d'arrière-plan des champs de texte :
Subform1.Name.fillColor = "102,179,255";
Subform1.Address.fillColor = "102,179,255";
Subform1.City.fillColor = "102,179,255";
Subform1.State.fillColor = "102,179,255";
Subform1.ZipCode.fillColor = "102,179,255";
Subform1.Country.fillColor = "102,179,255";
LIVECYCLE DESIGNER ES2 94
Exemples de tâches de script courantes
LiveCycle Designer ES2 Scripting Basics
Script pour la couleur d'arrière-plan des zones remplissables
Lorsque vous définissez la couleur d'arrière-plan ou la zone remplissable de chaque champ de texte, vos scripts doivent accéder à des
propriétés nécessitant une expression de syntaxe de référence et incluant le symbole (#). Etant donné que JavaScript n'interprète pas
correctement le symbole (#) dans les expressions de syntaxe de référence, le script utilise la méthode resolveNode pour résoudre
l'expression.
xfa.resolveNode("Subform1.Name.ui.#textEdit.border.fill.color").value = "153,204,255";
xfa.resolveNode("Subform1.Address.ui.#textEdit.border.fill.color").value = "153,204,255";
xfa.resolveNode("Subform1.City.ui.#textEdit.border.fill.color").value = "153,204,255";
xfa.resolveNode("Subform1.State.ui.#textEdit.border.fill.color").value = "153,204,255";
xfa.resolveNode("Subform1.ZipCode.ui.#textEdit.border.fill.color").value = "153,204,255";
xfa.resolveNode("Subform1.Country.ui.#textEdit.border.fill.color").value = "153,204,255";
Script pour le bouton Effacer tout
Le script pour le bouton Effacer tout utilise la méthode remerge pour fusionner à nouveau la conception de formulaire et les données de
formulaire. Dans le cas présent, la méthode rétablie efficacement les champs, les zones remplissables et les sous-formulaires à leur état
d'origine.
xfa.form.remerge();
Masquage et affichage d'objets
Cet exemple vous explique comment masquer les boutons lors de l'impression d'un formulaire ; il vous explique également comment
masquer et afficher des objets en modifiant les valeurs de visibilité au moment de l'exécution.
Remarque : vous pouvez également utiliser la boîte de dialogue Créateur d'actions dans le menu Outils pour masquer et afficher des objets dans
des formulaires dotés d'une disposition souple, sans avoir à écrire de scripts.
Dans cet exemple, tous les objets de formulaire sont affichés dans le formulaire.
LIVECYCLE DESIGNER ES2 95
Exemples de tâches de script courantes
LiveCycle Designer ES2 Scripting Basics
Grâce aux listes déroulantes de la zone Valeurs de visibilité, l'utilisateur peut afficher ou masquer les objets. Dans le diagramme suivant, le
champ d'adresse est masqué et la disposition du formulaire est ajustée en conséquence. Le bouton Formulaire pour impression est également
visible.
Remarque : pour afficher et masquer les objets au moment de l'exécution, vous devez enregistrer votre formulaire comme formulaire PDF
dynamique Acrobat.
Pour visualiser cet exemple de script et en obtenir d'autres, visitez le site Web de LiveCycle ES2 Developer Center
www.adobe.com/devnet/livecycle.
Script pour les valeurs de visibilité des sous-formulaires
Le script pour les valeurs de visibilité des sous-formulaires utilise une instruction de commutation pour gérer les trois options de visibilité
qu'un utilisateur peut appliquer à l'objet de sous-formulaire :
switch(xfa.event.newText)
case 'Invisible':
Subform1.presence
break;
case 'Hidden (Exclude
Subform1.presence
break;
default:
Subform1.presence
break;
}
{
= "invisible";
from Layout)':
= "hidden";
= "visible";
LIVECYCLE DESIGNER ES2 96
Exemples de tâches de script courantes
LiveCycle Designer ES2 Scripting Basics
Script pour les valeurs de visibilité des champs de texte
Le script pour les valeurs de visibilité des champs de texte nécessite deux variables. La première variable enregistre le nombre d'objets
contenus dans Subform1 :
var nSubLength = Subform1.nodes.length;
La deuxième variable enregistre le nom du champ de texte que l'utilisateur sélectionne dans la liste déroulante Champs de texte :
var sSelectField = fieldList.rawValue;
Le script suivant utilise la méthode replace pour supprimer tous les espaces contenus dans le nom du champ enregistré dans la variable
sSelectField afin que la valeur de la liste déroulante corresponde au nom de l'objet dans la palette Hiérarchie :
sSelectField = sSelectField.replace(' ', '');
Ce script utilise une boucle For pour passer en revue tous les objets contenus dans Subform1 :
for (var nCount = 0; nCount < nSubLength; nCount++) {
Si l'objet actif dans Subform1 est de type field et l'objet actif a le même nom que celui sélectionné par l'utilisateur, les cas de commutation
suivants sont exécutés :
if ((Subform1.nodes.item(nCount).className == "field") & (Subform1.nodes.item(nCount).name == sSelectField)) {
Le script suivant utilise une instruction de commutation pour gérer les trois valeurs de visibilité qu'un utilisateur peut appliquer aux objets
de champs de texte :
switch(xfa.event.newText) {
case 'Invisible':
Subform1.nodes.item(nCount).presence = "invisible";
break;
case 'Hidden (Exclude from Layout)':
Subform1.nodes.item(nCount).presence = "hidden";
break;
default:
Subform1.nodes.item(nCount).presence = "visible";
break;
}
}
}
Script pour les valeurs de visibilité des boutons
Le script pour les valeurs de visibilité des boutons nécessite deux variables. Cette variable enregistre le nombre d'objets contenus dans
Subform1 :
var nSubLength = Subform1.nodes.length;
Cette variable enregistre le nom du bouton sélectionné par l'utilisateur dans la liste déroulante Boutons :
var sSelectButton = buttonList.rawValue;
Le script suivant utilise la méthode replace pour supprimer tous les espaces contenus dans le nom du bouton enregistré dans la variable
sSelectField afin que la valeur de la liste déroulante corresponde au nom de l'objet dans la palette Hiérarchie :
sSelectButton = sSelecButton.replace(/\s/g, '');
Ce script utilise une boucle For pour passer en revue tous les objets contenus dans Subform1 :
for (var nCount = 0; nCount < nSubLength; nCount++) {
LIVECYCLE DESIGNER ES2 97
Exemples de tâches de script courantes
LiveCycle Designer ES2 Scripting Basics
Si l'objet actif dans Subform1 est de type field et l'objet actif a le même nom que celui sélectionné par l'utilisateur, exécutez les cas de
commutation suivants :
if ((Subform1.nodes.item(nCount).className == "field") &
Subform1.nodes.item(nCount).name == sSelectButton)) {
Ce script utilise une instruction switch pour gérer les cinq valeurs de visibilité qu'un utilisateur peut appliquer aux objets de bouton.
Remarque : la propriété relevant indique si un objet doit s'afficher lors de l'impression du formulaire.
switch(xfa.event.newText) {
case 'Invisible':
Subform1.nodes.item(nCount).presence
break;
case 'Hidden (Exclude from Layout)':
Subform1.nodes.item(nCount).presence
break;
case 'Visible (but Don\'t Print)':
Subform1.nodes.item(nCount).presence
Subform1.nodes.item(nCount).relevant
break;
case 'Invisible (but Print Anyway)':
Subform1.nodes.item(nCount).presence
Subform1.nodes.item(nCount).relevant
break;
default:
Subform1.nodes.item(nCount).presence
break;
}
= "invisible";
= "hidden";
= "visible";
= "-print";
= "invisible";
= "+print";
= "visible";
}
}
Script pour la réinitialisation des listes déroulantes
Utilisez la méthode resetData pour rétablir toutes les valeurs par défaut des listes déroulantes :
xfa.host.resetData();
Utilisez la méthode remerge pour fusionner à nouveau la conception de formulaire et les données du formulaire. Dans le cas présent, la
méthode rétablie de manière efficace les objets de la zone Objets de formulaire à leur état d'origine :
xfa.form.remerge();
LIVECYCLE DESIGNER ES2 98
Exemples de tâches de script courantes
LiveCycle Designer ES2 Scripting Basics
Exclure un objet de l'ordre de tabulation
Cet exemple montre comment exclure un objet de la séquence de tabulation par défaut. Dans cet exemple, un utilisateur commence dans
TextField1 et utilise le bouton de tabulation pour passer à TextField2 puis à TextField3. Cependant, l'objet de la liste déroulante,
DropDownList1, est configuré pour s'afficher lorsque le curseur de l'utilisateur entre dans TextField2.
Dans ce cas, par défaut, l'utilisateur choisit de se déplacer dans l'ordre suivant :
Pour exclure DropDownList1 de la séquence de tabulation, vous pouvez ajouter les scripts suivants à l'objet TextField2 :
Evénement
Script
enter
// Cette instruction conditionnelle affiche DropDownList3
// et permet à l'application client d'effectuer l'identification sur TextField2.
if (DropDownList3.presence != "visible") {
DropDownList3.presence = "visible";
xfa.host.setFocus(this);
}
exit
// Cette instruction conditionnelle permet de vérifier si l'utilisateur
// appuie sur la touche Maj en même temps que la touche de tabulation. Si la touche Maj
// est maintenue enfoncée, l'application client effectue l'identification sur
// TextField1, sinon elle la fait sur TextField3. Ce
// qui se passe pour l'utilisateur est que DropDownList3 ne fait
// pas partie de l'ordre de tabulation.
var isShiftDown = xfa.event.shift;
if (isShiftDown) {
xfa.host.setFocus(TextField1);
} else {
xfa.host.setFocus(textField3);
}
LIVECYCLE DESIGNER ES2 99
Exemples de tâches de script courantes
LiveCycle Designer ES2 Scripting Basics
Modification des propriétés visuelles d'un objet sur le client
Cet exemple vous montre comment modifier les propriétés visuelles d'un objet ; il s'agit ici d'un champ de texte. Par exemple, si vous activez
l'option d'agrandissement du champ, la zone remplissable du champ de texte augmente de quatre pouces.
Remarque : pour modifier les propriétés visuelles des objets sur le client, vous devez enregistrer votre formulaire comme formulaire PDF
dynamique Acrobat.
Dans cet exemple, les cases à cocher comportent plusieurs noms d'objet ; par conséquent, Designer ES2 assigne une valeur d'instance pour
référencer l'objet. Le script de la case à cocher utilise une instruction if-else pour donner l'effet d'une sélection ou d'une désélection.
Pour visualiser cet exemple de script et en obtenir d'autres, visitez le site Web de LiveCycle ES2 Developer Center
www.adobe.com/devnet/livecycle.
Script pour l'option de déplacement du champ
Si cette case est activée, le champ se déplace selon les paramètres x et y. Si elle n'est pas activée, le champ revient à sa position d'origine.
if (CheckBox1.rawValue == true) {
TextField.x = "3.0in";
TextField.y = "3.5in";
}
else {
TextField.x = "1in";
TextField.y = "3in";
}
LIVECYCLE DESIGNER ES2 100
Exemples de tâches de script courantes
LiveCycle Designer ES2 Scripting Basics
Script pour l'option d'agrandissement du champ
Si cette case est activée, la largeur du champ passe à 4 pouces. Si elle est désactivée, la largeur du champ passe à 2,5 pouces.
if (CheckBox2.rawValue == true)
TextField.w = "4in";
else
TextField.w = "2.5in";
Script pour l'option de réduction du champ
Si cette case est activée, la hauteur du champ passe à 1,5 pouces. Si elle est désactivée, la hauteur du champ passe à 0,5 pouce.
if (CheckBox3.rawValue == true)
TextField.h = "1.5in";
else
TextField.h = "0.5in";
Script pour l'option de modification de la couleur de l'objet
Si cette case est activée, la bordure du champ devient rouge. Si elle est désactivée, la bordure du champ devient blanche.
if (CheckBox4.rawValue == true)
TextField.border.edge.color.value = "255,0,0";
else
TextField.border.edge.color.value = "255,255,255";
Script pour l'option de modification de la couleur de remplissage de la zone remplissable
Si cette case est activée, la zone remplissable du champ de texte devient verte. Si elle est désactivée, la zone remplissable du champ de texte
devient blanche.
if (CheckBox5.rawValue == true) {
xfa.resolveNode("TextField.ui.#textEdit.border.fill.color").value = "0,255,0";
}
else {
xfa.resolveNode("TextField.ui.#textEdit.border.fill.color").value = "255,255,255";
}
Script pour l'option d'ajustement de la largeur de la valeur
Si cette case est activée, la zone remplissable du champ de texte s'adapte pour héberger la valeur. Si elle est désactivée, la zone remplissable
du champ de texte ne s'adapte pas.
if (CheckBox6.rawValue == true)
TextField.minW = "0.25in";
else
TextField.maxW = "2.5in";
Script pour l'option de masquage du champ
Si cette case est activée, le champ est masqué. Si elle est désactivée, le champ est visible.
if (CheckBox7.rawValue == true)
TextField.presence = "hidden";
else
TextField.presence = "visible";
Script pour l'option de changement de police de la valeur
Si cette case est activée, la police de la valeur est Courier New. Si elle est désactivée, la police de la valeur est Myriad Pro.
if (CheckBox8.rawValue == true)
TextField.font.typeface = "Courier New";
else
TextField.font.typeface = "Myriad Pro";
LIVECYCLE DESIGNER ES2 101
Exemples de tâches de script courantes
LiveCycle Designer ES2 Scripting Basics
Script pour l'option de modification de la taille de la police
Si cette case est activée, la taille de la police est de 14 points. Si elle est désactivée, la taille de la police est de 10 points.
if (CheckBox9.rawValue == true)
TextField.font.size = "14pt";
else
TextField.font.size = "10pt";
Script pour l'option d'alignement vertical de la valeur du champ de texte
Si cette case est activée, la valeur du champ de texte est alignée en haut. Si elle est désactivée, la valeur du champ de texte est alignée au centre.
if (CheckBox10.rawValue == true)
TextField.para.vAlign = "top";
else
TextField.para.vAlign = "middle";
Script pour l'option d'alignement horizontal de la valeur du champ de texte
Si cette case est activée, la valeur du champ de texte est alignée au centre. Si elle est désactivée, la valeur du champ de texte est alignée à
gauche.
if (CheckBox11.rawValue == true)
TextField.para.hAlign = "center";
else
TextField.para.hAlign = "left";
Script pour l'option d'affichage d'une valeur définie
Si cette case est activée, la valeur définie à l'aide d'un script s'affiche dans le champ de texte. Si elle est désactivée, la valeur par défaut
(également définie à l'aide d'un script) s'affiche dans le champ de texte.
if (CheckBox12.rawValue == true)
TextField.rawValue = "Il s'agit d'une valeur paramétrée à l'aide d'un script.";
else
TextField.rawValue = "Il s'agit d'une valeur par défaut.";
Script pour l'option de modification du texte de la légende
Si cette case est activée, le texte de la légende défini à l'aide d'un script s'affiche comme légende. Si elle est désactivée, la légende par défaut
(également définie à l'aide d'un script) s'affiche dans le champ de texte.
if (CheckBox13.rawValue == true)
xfa.resolveNode("TextField.caption.value.#text").value = "Alternate Caption:";
else
xfa.resolveNode("TextField.caption.value.#text").value = "Caption:";
Script pour l'option de modification de la bordure du champ de 3D à case pleine
Si cette case est activée, la bordure du champ devient une case pleine. Si elle est désactivée, la bordure du champ devient une bordure 3D.
if (CheckBox14.rawValue == true)
xfa.resolveNode("TextField.ui.#textEdit.border.edge").stroke = "solid";
else
xfa.resolveNode("TextField.ui.#textEdit.border.edge").stroke = "lowered";
Script pour le bouton de désactivation de toutes les cases à cocher
Utilisez la méthode resetData pour rétablir toutes les valeurs par défaut des cases à cocher (désactivées) :
xfa.host.resetData();
Utilisez la méthode remerge pour fusionner à nouveau la conception de formulaire et les données du formulaire. Dans le cas présent, la
méthode rétablie de manière efficace le champ de texte à son état d'origine.
xfa.form.remerge();
LIVECYCLE DESIGNER ES2 102
Exemples de tâches de script courantes
LiveCycle Designer ES2 Scripting Basics
Obtention de la valeur actuelle ou de la valeur précédente d'une liste déroulante
Cet exemple vous montre comment obtenir la valeur actuelle d'une liste déroulante et vous explique les différentes méthodes d'accès à la
valeur précédente d'une liste déroulante sur un formulaire. Outre les scripts actuels qui définissent les valeurs actuelle et précédente, il est
important de noter que les scripts sont situés sur l'événement change de la liste déroulante.
Dans l'exemple suivant, lorsqu'un utilisateur sélectionne une valeur dans la liste déroulante, celle-ci s'affiche dans le champ Valeur actuelle.
Ainsi, lorsque l'utilisateur sélectionne une autre valeur dans la liste déroulante, la nouvelle valeur s'affiche dans la liste Valeur actuelle et la
valeur précédente s'affiche dans le champ Valeur précédente 1.
Remarque : chacune de ces méthodes d'obtention de la valeur précédente d'une liste déroulante utilise un script différent. Le champ de texte
Valeur précédente 1 est rempli par une référence directe à la propriété rawValue de la liste déroulante, tandis que le champ de texte Valeur
précédente 2 est rempli à l'aide de la propriété prevText. Pour obtenir des résultats homogènes, il est recommandé d'accéder à la valeur
précédente en utilisant la propriété prevText.
Pour visualiser cet exemple de script et en obtenir d'autres, visitez le site Web de LiveCycle ES2 Developer Center à l'adresse suivante :
www.adobe.com/devnet/livecycle..
Script pour le remplissage du champ de texte Valeur actuelle
Remplissez la valeur du champ de texte Valeur actuelle à l'aide de la propriété newText :
CurrentValue.rawValue = xfa.event.newText;
Script pour le remplissage du champ de texte Valeur précédente 1
Remplissez la valeur du champ de texte Valeur précédente 1 en référençant la valeur rawValue de la liste déroulante :
PreviousValue1.rawValue = DropDownList.rawValue;
Script pour le remplissage du champ de texte Valeur précédente 2
Remplissez la valeur du champ de texte Valeur précédente 2 à l'aide de la propriété prevText :
PreviousValue2.rawValue = xfa.event.prevText;
LIVECYCLE DESIGNER ES2 103
Exemples de tâches de script courantes
LiveCycle Designer ES2 Scripting Basics
Préserver le format en texte enrichi lors de la copie de valeurs de champs
Cet exemple montre comment garder le format en texte enrichi de données de champs lorsque vous copiez des valeurs d'un champ à un
autre.
TextField1 et TextField2 sont configurés pour Permettre des lignes multiples et afficher le format en texte enrichi.
Le bouton Copier texte enrichi permet de copier la valeur de TextField1, dont son format en texte enrichi, et de la coller dans TextField2.
Script pour le bouton Copier texte enrichi
Les valeurs de champ de texte enrichi sont stockées au format XML dans un objet enfant du champ contenant cette valeur. Le script suivant,
situé sur l'événement click du bouton Copier texte enrichi, utilise la méthode saveXML pour stocker la définition XML de la valeur de texte
enrichi. Par conséquent, les données XML sont chargées dans l'objet enfant correspondant de TextField2.
var richText = TextField1.value.exData.saveXML();
TextField2.value.exData.loadXML(richText,1,1);
Dans cet exemple, la valeur de texte enrichi est configurée pour écraser la valeur existante de TextField2. Pour ajouter les données de texte
enrichi à la valeur actuelle de TextField2, ajustez le script comme suit :
var richText = TextField1.value.exData.saveXML();
TextField2.value.exData.loadXML(richText,1,0);
Ajustement de la hauteur d'un champ au moment de l'exécution
Cet exemple vous montre comment adapter un champ à la hauteur du contenu d'un autre champ.
Dans cet exemple, lorsque l'utilisateur saisit plusieurs lignes dans TextField1, puis clique sur le bouton Développer, la hauteur de TextField2
augmente de manière à correspondre à celle de TextField1.
Pour visualiser cet exemple de script et en obtenir d'autres, visitez le site Web de LiveCycle ES2 Developer Center à l'adresse suivante :
www.adobe.com/devnet/livecycle..
LIVECYCLE DESIGNER ES2 104
Exemples de tâches de script courantes
LiveCycle Designer ES2 Scripting Basics
Script pour le bouton d'ajustement
Le script suivant correspond au bouton d'ajustement :
var newHeight = xfa.layout.h(TextField1, "in");
TextField2.h = newHeight + "in";
Définition d'une valeur de champ obligatoire au moment de l'exécution
Cet exemple vous montre comment rendre un champ obligatoire au moment de l'exécution.
Dans cet exemple, lorsque vous cliquez sur le bouton de valeur obligatoire, si l'utilisateur tente d'envoyer un formulaire sans saisir de texte
dans TextField1, un message d'erreur s'affiche.
Pour visualiser cet exemple de script et en obtenir d'autres, visitez le site Web de LiveCycle ES2 Developer Center
www.adobe.com/devnet/livecycle.
Script pour le bouton de valeur obligatoire
Le script suivant correspond au bouton de valeur obligatoire :
TextField1.validate.nullTest = "erreur";
Vous pouvez également utiliser l'un des scripts suivants :
TextField1.mandatory = "erreur"
TextField1.mandatoryMessage = "Ce champ est obligatoire."
Calcul des sommes d'un champ
Cet exemple vous montre comment calculer les sommes des champs situés à différents niveaux de la hiérarchie lorsque l'utilisateur ouvre
un formulaire dans une application client, telle que Acrobat Professional, Adobe Reader ou une application client HTML.
Pour visualiser cet exemple de script et en obtenir d'autres, visitez le site Web de LiveCycle ES2 Developer Center à l'adresse suivante :
www.adobe.com/devnet/livecycle..
LIVECYCLE DESIGNER ES2 105
Exemples de tâches de script courantes
LiveCycle Designer ES2 Scripting Basics
Script pour le calcul de la somme des champs répétés dans un formulaire
Pour calculer la somme des champs répétés dans un formulaire, vous ajoutez un événement calculate au champ de somme :
var fields = xfa.resolveNodes("NumericField1[*]");
var total = 0;
for (var i=0; i <= fields.length-1; i++) {
total = total + fields.item(i).rawValue;
}
this.rawValue = total;
Script pour le calcul de la somme des champs répétés
De la même manière, pour calculer la somme des champs répétés, vous ajoutez un événement calculate au champ de somme :
var fields = xfa.resolveNodes("detail[*].NumericField1");
var total = 0;
for (var i=0; i <= fields.length-1; i++) {
total = total + fields.item(i).rawValue;
}
this.rawValue = total;
Script pour le calcul de la somme des champs dans une page
Pour calculer la somme des champs dans une page, vous ajoutez un événement calculate au champ de somme :
var fields = xfa.layout.pageContent(0 , "field", 0);
var total = 0;
for (var i=0; i <= fields.length-1; i++) {
if (fields.item(i).name == "NumericField1") {
total = total + fields.item(i).rawValue;00003}
}
this.rawValue = total;
Mise en surbrillance des champs en réponse aux interactions de l'utilisateur final
Cet exemple vous montre comment mettre en surbrillance le champ actif avec lequel travaille un utilisateur, comment mettre en surbrillance
les champs que doit remplir un utilisateur, et comment utiliser les zones de message pour envoyer des commentaires à l'utilisateur.
LIVECYCLE DESIGNER ES2 106
Exemples de tâches de script courantes
LiveCycle Designer ES2 Scripting Basics
Dans cet exemple, un astérisque (*) apparaît à droite des champs obligatoires. Lorsqu'un champ est sélectionné, la bordure du champ devient
bleue. Si l'utilisateur clique sur le bouton de vérification des données sans avoir rempli les champs obligatoires, un message s'affiche et le
champ devient rouge. Si tous les champs obligatoires sont remplis, un message de confirmation s'affiche lorsque l'utilisateur clique sur le
bouton de vérification des données.
Pour visualiser cet exemple de script et en obtenir d'autres, visitez le site Web de LiveCycle ES2 Developer Center à l'adresse suivante :
www.adobe.com/devnet/livecycle..
Script pour l'ajout d'une bordure bleue autour d'un champ sélectionné
Pour ajouter une bordure bleue au champ sélectionné, ajoutez les scripts suivants à chaque champ de texte :
Par exemple, ajoutez un événement enter au champ Nom :
Name.border.edge.color.value = "0,0,255";
Par exemple, ajoutez un événement exit au champ Nom :
Name.border.edge.color.value = "255,255,255";
Par exemple, ajoutez un événement mouseEnter au champ Nom :
Name.border.edge.color.value = "0,0,255";
Par exemple, ajoutez un événement mouseExit au champ Nom :
Name.border.edge.color.value = "255,255,255";
Script pour le bouton de vérification des données
Le script suivant, créé pour le bouton de vérification des données, exécute une série de vérifications afin de confirmer que les champs
obligatoires contiennent des données. Dans le cas présent, chaque champ est vérifié un à un afin de confirmer que la valeur du champ est
non-nulle ou est une chaîne vide. Si la valeur du champ est nulle ou une chaîne vide, un message d'alerte s'affiche indiquant que des données
doivent être entrées dans le champ et que la couleur d'arrière-plan de la zone remplissable est passée au rouge.
LIVECYCLE DESIGNER ES2 107
Exemples de tâches de script courantes
LiveCycle Designer ES2 Scripting Basics
Utilisez cette variable pour indiquer si le champ ne contient aucune donnée :
var iVar = 0;
if ((Name.rawValue == null) || (Name.rawValue == "")) {
xfa.host.messageBox("Veuillez saisir une valeur dans le champ Name.");
Ce script modifie la couleur de la zone remplissable du champ de texte :
xfa.resolveNode("Name.ui.#textEdit.border.edge").stroke = "solid";
xfa.resolveNode("Name.ui.#textEdit.border.fill.color").value = "255,100,50";
// Définir la variable pour indiquer que ce champ ne contient aucune donnée.
iVar = 1;
}
else {
// Réinitialiser la zone remplissable du champ de texte.
xfa.resolveNode("Name.ui.#textEdit.border.edge").stroke = "lowered";
xfa.resolveNode("Name.ui.#textEdit.border.fill.color").value = "255,255,255";
}
if ((Address.rawValue == null) || (Address.rawValue == "")) {
xfa.host.messageBox("Veuillez saisir une valeur dans le champ Address.");
Ce script modifie la couleur de la zone remplissable du champ de texte :
xfa.resolveNode("Address.ui.#textEdit.border.edge").stroke = "solid";
xfa.resolveNode("Address.ui.#textEdit.border.fill.color").value = "255,100,50";
Ce script définit la variable pour indiquer que ce champ ne contient aucune donnée :
iVar = 1;
}
else {
Ce script réinitialise la zone remplissable du champ de texte :
xfa.resolveNode("Address.ui.#textEdit.border.edge").stroke = "lowered";
xfa.resolveNode("Address.ui.#textEdit.border.fill.color").value = "255,255,255";
}
if ((City.rawValue == null) || (City.rawValue == "")) {
xfa.host.messageBox("Veuillez saisir une valeur dans le champ City.");
Ce script modifie la couleur de la zone remplissable du champ de texte :
xfa.resolveNode("City.ui.#textEdit.border.edge").stroke = "solid";
xfa.resolveNode("City.ui.#textEdit.border.fill.color").value = "255,100,50";
Ce script définit la variable pour indiquer que ce champ ne contient aucune donnée :
iVar = 1;
}
else {
Ce script réinitialise la zone remplissable du champ de texte :
xfa.resolveNode("City.ui.#textEdit.border.edge").stroke = "lowered";
xfa.resolveNode("City.ui.#textEdit.border.fill.color").value = "255,255,255";
}
if ((State.rawValue == null) || (State.rawValue == "")) {
xfa.host.messageBox("Veuillez saisir une valeur dans le champ State.");
LIVECYCLE DESIGNER ES2 108
Exemples de tâches de script courantes
LiveCycle Designer ES2 Scripting Basics
Ce script modifie la couleur de la zone remplissable du champ de texte :
xfa.resolveNode("State.ui.#textEdit.border.edge").stroke = "solid";
xfa.resolveNode("State.ui.#textEdit.border.fill.color").value = "255,100,50";
Ce script définit la variable pour indiquer que ce champ ne contient aucune donnée :
iVar = 1;
}
else {
Ce script réinitialise la zone remplissable du champ de texte :
xfa.resolveNode("State.ui.#textEdit.border.edge").stroke = "lowered";
xfa.resolveNode("State.ui.#textEdit.border.fill.color").value = "255,255,255";
}
if ((ZipCode.rawValue == null) || (ZipCode.rawValue == "")) {
xfa.host.messageBox("Veuillez saisir une valeur dans le champ ZipCode.");
Ce script modifie la couleur de la zone remplissable du champ de texte :
xfa.resolveNode("ZipCode.ui.#textEdit.border.edge").stroke = "solid";
xfa.resolveNode("ZipCode.ui.#textEdit.border.fill.color").value = "255,100,50";
Ce script définit la variable pour indiquer que ce champ ne contient aucune donnée :
iVar = 1;
}
else {
Ce script réinitialise la zone remplissable du champ de texte :
xfa.resolveNode("ZipCode.ui.#textEdit.border.edge").stroke = "lowered";
xfa.resolveNode("ZipCode.ui.#textEdit.border.fill.color").value = "255,255,255";
}
if ((Country.rawValue == null) || (Country.rawValue == "")) {
xfa.host.messageBox("Veuillez saisir une valeur dans le champ Country.");
Ce script modifie la couleur de la zone remplissable du champ de texte :
xfa.resolveNode("Country.ui.#textEdit.border.edge").stroke = "solid";
xfa.resolveNode("Country.ui.#textEdit.border.fill.color").value = "255,100,50";
Ce script définie la variable pour indiquer que ce champ ne contient aucune donnée.
iVar = 1;
}
else {
Ce script réinitialise la zone remplissable du champ de texte.
xfa.resolveNode("Country.ui.#textEdit.border.edge").stroke = "lowered";
xfa.resolveNode("Country.ui.#textEdit.border.fill.color").value = "255,255,255";
}
Si tous les champs obligatoires contiennent des données, la variable iVar est définie à zéro et un message de confirmation s'affiche :
if (iVar == 0) {
xfa.host.messageBox("Merci d'avoir renseigné ces informations.");
}
LIVECYCLE DESIGNER ES2 109
Exemples de tâches de script courantes
LiveCycle Designer ES2 Scripting Basics
Réinitialisation des valeurs du sous-formulaire actif
Cet exemple vous montre comment réinitialiser les valeurs d'un jeu de champs spécifique (et non de l'intégralité du formulaire). Pour ce
faire, réinitialisez uniquement les champs dans l'objet de sous-formulaire requis.
Dans cet exemple, l'utilisateur peut cliquer sur le bouton d'effacement pour réinitialiser les valeurs du champ.
Pour visualiser cet exemple de script et en obtenir d'autres, visitez le site Web de LiveCycle ES2 Developer Center
www.adobe.com/devnet/livecycle.
Script pour les valeurs qui s'affichent dans la colonne de gauche
Ecrivez le script suivant pour les valeurs qui s'affichent dans la colonne de gauche :
this.rawValue = this.parent.index + 1;
Pour réinitialiser les valeurs par défaut, ajoutez un événement click au bouton d'effacement. Vous avez besoin d'une expression de syntaxe
de référence, car le détail est un sous-formulaire répété qui doit se refléter dans l'expression de syntaxe de référence. Par conséquent, il est
facile de développer les paramètres resetData séparément.
var f1 = this.parent.somExpression + ".TextField2" + ",";
var f2 = f1 + this.parent.somExpression + ".DropDownList1" + ",";
var f3 = f2 + this.parent.somExpression + ".NumericField1";
// ...et présenter la variable comme paramètre.
xfa.host.resetData(f3);
Modification de la visibilité d'un objet de conception de formulaire
Designer ES2 offre les paramètres de visibilité suivants pour les différents objets d'un formulaire via les onglets de la palette Objet. Les
paramètres Invisible et Masqué (pas affiché) ne s'appliquent pas aux groupes, aux zones de contenu, aux gabarits, aux jeux de pages et aux
objets des jeux de sous-formulaires.
Remarque : pour modifier le paramètre de visibilité d'un objet à l'aide de scripts, vous devez modifier la valeur de deux propriétés sous-jacentes
du modèle d’objet de formulaire XML : presence et relevant.
LIVECYCLE DESIGNER ES2 110
Exemples de tâches de script courantes
LiveCycle Designer ES2 Scripting Basics
Le tableau ci-dessous présente les paramètres de visibilité et la syntaxe de référence correspondante.
Paramètre de visibilité
Syntaxe de référence
Visible
FormCalc
ObjectName.presence = "visible"
JavaScript
ObjectName.presence = "visible";
Visible (Ecran seulement)
FormCalc
ObjectName.presence = "visible"
ObjectName.relevant = "-print"
JavaScript
ObjectName.presence = "visible";
ObjectName.relevant = "-print";
Visible (Impression seulement)
FormCalc
ObjectName.presence = "visible"
ObjectName.relevant = "+print"
JavaScript
ObjectName.presence = "visible";
ObjectName.relevant = "+print";
Invisible
FormCalc
ObjectName.presence = "invisible"
JavaScript
ObjectName.presence = "invisible";
Masqué (pas affiché)
FormCalc
ObjectName.presence = "hidden"
JavaScript
ObjectName.presence = "hidden";
Impression recto seulement
FormCalc
ObjectName.presence = "simplex"
JavaScript
ObjectName.presence = "simplex";
Impression recto verso seulement
FormCalc
ObjectName.presence = "duplex"
JavaScript
ObjectName.presence = "duplex";
LIVECYCLE DESIGNER ES2 111
Exemples de tâches de script courantes
LiveCycle Designer ES2 Scripting Basics
Utilisation des propriétés du gestionnaire d'instances pour contrôler les sous-formulaires
Cet exemple vous montre comment utiliser les propriétés du gestionnaire d'instances (qui fait partie du modèle d'objet de formulaire XML)
pour récupérer les informations sur les sous-formulaires au moment de l'exécution.
Dans le formulaire suivant, les quatre boutons donnent des informations sur le sous-formulaire Subform1 grâce aux propriétés de script du
gestionnaire d'instances. Par exemple, lorsque l'utilisateur clique sur le bouton Max., un message décrivant le nombre maximal d'instances
de Subform1 prises en charge s'affiche.
Script pour la zone de message pour la génération de la valeur de la propriété Count
Le script suivant utilise la méthode messageBox pour générer la valeur de la propriété count :
xfa.host.messageBox("Le nombre actuel d'instances Subform1 sur le formulaire
est :" + properties.Subform1.instanceManager.count, "Propriétés du
gestionnaire d'instances",3);
Vous pouvez également écrire ce script en utilisant du trait de soulignement (_) pour référencer la propriété count du gestionnaire
d'instances, comme indiqué ci-après :
xfa.host.messageBox("Le nombre actuel d'instances Subform1 sur le formulaire
est : " + properties._Subform1.count, "Propriétés du gestionnaire d'instances", 3);
Le trait de soulignement (_) est particulièrement important s'il n'existe aucune instance de sous-formulaire sur le formulaire.
Script pour la zone de message pour la génération de la valeur de la propriété Max
Le script suivant utilise la méthode messageBox pour générer la valeur de la propriété max :
xfa.host.messageBox("Le nombre maximum d'instances autorisées pour Subform1
est de : " + properties.Subform1.instanceManager.max, "Propriétés du
gestionnaire d'instances", 3);
Vous pouvez également écrire ce script en utilisant du trait de soulignement (_) pour référencer la propriété max du gestionnaire d'instances,
comme indiqué ci-après :
xfa.host.messageBox("Le nombre maximum d'instances autorisées pour Subform1
est de : " + properties._Subform1.max, "Propriétés du gestionnaire d'instances", 3);
LIVECYCLE DESIGNER ES2 112
Exemples de tâches de script courantes
LiveCycle Designer ES2 Scripting Basics
Script pour la zone de message pour la génération de la valeur de la propriété Min
Le script suivant utilise la méthode messageBox pour générer la valeur de la propriété min :
xfa.host.messageBox("Le nombre minimum d'instances autorisées pour Subform1
est de : " + properties.Subform1.instanceManager.min, "Instance Manager
Properties", 3);
Vous pouvez également écrire ce script en utilisant du trait de soulignement (_) pour référencer la propriété min du gestionnaire d'instances,
comme indiqué ci-après :
xfa.host.messageBox("Le nombre minimum d'instances autorisées pour Subform1
est de : " + properties._Subform1.min, "Propriétés du gestionnaire d'instances", 3);
Script pour la zone de message pour la génération de la valeur de la propriété Subform
Le script suivant utilise la méthode messageBox pour générer le nom de la propriété subform :
xfa.host.messageBox("Le nom du sous-formulaire utilisant la propriété du gestionnaire d'instances
est : " + properties.Subform1.instanceManager.name +
".\n\nRemarque : Cette valeur est différente de celle renvoyée par le nom
pour l'objet Subform1." , "Propriétés du gestionnaire d'instances", 3);
Vous pouvez également écrire ce script en utilisant du trait de soulignement (_) pour référencer le nom de la propriété du gestionnaire
d'instances, comme indiqué ci-après :
xfa.host.messageBox("Le nom du sous-formulaire utilisant la propriété du gestionnaire d'instances
est : " + properties._Subform1.name +
".\n\nRemarque : Cette valeur est différente de celle renvoyée par le nom
pour l'objet Subform1." , "Instance Manager Properties", 3);
Utilisation des méthodes du gestionnaire d'instances pour contrôler les sous-formulaires
Cet exemple vous montre comment utiliser les méthodes du gestionnaire d'instances (qui fait partie du modèle d'objet de formulaire XML)
pour effectuer des opérations sur les objets de sous-formulaire au moment de l'exécution. Par exemple, vous pouvez ajouter les instances
supprimées d'un sous-formulaire particulier ou une rangée de tableau.
Dans le formulaire suivant, l'utilisateur se sert des quatre boutons pour utiliser les différentes méthodes de script du gestionnaire d'instances.
Par exemple, lorsque l'utilisateur clique sur le bouton Ajouter, une nouvelle instance Subform2 est ajoutée au formulaire.
Remarque : le bouton de déplacement réorganise les deux premières instances Subform2, et le bouton de définition affiche le nombre maximal
d'instances Subform2. Dans les deux cas, vous devez ajouter ou supprimer des sous-formulaires ou effectuer des modifications au niveau des
données dans les champs de texte pour que les modifications soient appliquées aux instances Subform2.
LIVECYCLE DESIGNER ES2 113
Exemples de tâches de script courantes
LiveCycle Designer ES2 Scripting Basics
Script pour déterminer si vous avez ajouté le nombre maximal d'instances de sous-formulaire à un formulaire
Le script suivant détermine si le nombre maximal d'instances de Subform2 pris en charge se trouve sur le formulaire. Si c'est le cas, le script
affiche un message. Dans le cas contraire, la nouvelle instance de Subform2 est ajoutée au formulaire.
if (methods.Subform2.instanceManager.count ==
methods.Subform2.instanceManager.max) {
xfa.host.messageBox("Vous avez atteint le nombre maximum d'articles autorisés.",
"Méthodes du gestionnaire d'instances", 1);
}
else {
methods.Subform2.instanceManager.addInstance(1);
xfa.form.recalculate(1);
}
Vous pouvez également écrire ce script en utilisant un trait de soulignement (_) pour référencer les propriétés et les méthodes du
gestionnaire d'instances, comme indiqué ci-après :
if (methods._Subform2.count == methods._Subform1.max) {
xfa.host.messageBox("Vous avez atteint le nombre maximum d'articles
autorisés.", "Méthodes du gestionnaire d'instances", 1);
}
else {
methods._Subform2.addInstance(1);
xfa.form.recalculate(1);
}
Script pour déterminer s'il existe encore des sous-formulaires à supprimer dans le formulaire
Le script suivant détermine s'il existe une instance Subform2 sur le formulaire. S'il n'en existe pas, le script affiche un message indiquant
qu'aucune instance n'existe. S'il existe des instances, le script supprime la première instance du formulaire.
if (methods.Subform2.instanceManager.count == 0) {
xfa.host.messageBox("Il n'y a aucune instance de sous-formulaire à supprimer.",
"Méthodes du gestionnaire d'instances", 1);
}
else {
methods.Subform2.instanceManager.removeInstance(0);
xfa.form.recalculate(1);
}
Vous pouvez également écrire ce script en utilisant un trait de soulignement (_) pour référencer les propriétés et les méthodes du
gestionnaire d'instances, comme indiqué ci-après :
if (methods._Subform2.count == 0) {
xfa.host.messageBox("Il n'y a aucune instance de sous-formulaire à supprimer.",
"Méthodes du gestionnaire d'instances", 1);
}
else {
methods._Subform2.removeInstance(0);
xfa.form.recalculate(1);
}
LIVECYCLE DESIGNER ES2 114
Exemples de tâches de script courantes
LiveCycle Designer ES2 Scripting Basics
Script pour obliger à quatre instances de sous-formulaire de s'afficher sur le formulaire
Le script suivant oblige quatre instances de Subform2 de s'afficher sur le formulaire, indépendamment du nombre d'instances existantes :
methods.Subform2.instanceManager.setInstances(4);
Vous pouvez également écrire ce script en utilisant un trait de soulignement (_) pour référencer les propriétés et les méthodes du
gestionnaire d'instances, comme indiqué ci-après :
methods._Subform2.setInstances(4);
Script pour obliger la première et la deuxième instance de sous-formulaire à changer d'emplacement sur le formulaire
Le script suivant oblige la première et la deuxième instance de Subform2 de changer d'emplacement sur le formulaire.
methods.Subform2.instanceManager.moveInstance(0,1);
Vous pouvez également écrire ce script en utilisant du trait de soulignement (_) pour référencer les propriétés et les méthodes du
gestionnaire d'instances, comme indiqué ci-après.
methods._Subform2.moveInstance(0,1);
Utilisation du gestionnaire d'instances pour contrôler les sous-formulaires au moment de l'exécution
Cet exemple vous montre comment utiliser les propriétés et les méthodes du gestionnaire d'instances pour récupérer les informations
concernant les sous-formulaires et effectuer des opérations sur les objets de sous-formulaire au moment de l'exécution.
Dans cet exemple, l'utilisateur utilise les boutons pour exécuter diverses actions à l'aide des instances de Subform3. Par exemple, lorsque
l'utilisateur clique sur le bouton d'ajout d'une rangée au-dessous, une nouvelle instance Subform3 est ajoutée sous l'instance actuelle.
Remarque : vous devez ajouter ou supprimer des sous-formulaires ou effectuer des modifications au niveau des données dans les champs de texte
pour que les modifications soient appliquées aux instances Subform3.
Remarque : s'il n'existe aucune instance d'un sous-formulaire donné sur votre formulaire, utilisez le trait de soulignement (_) comme indiqué
dans les exemples suivants. Pour plus de détails sur l'utilisation du trait de soulignement (_), voir l'aide de Designer ES2.
LIVECYCLE DESIGNER ES2 115
Exemples de tâches de script courantes
LiveCycle Designer ES2 Scripting Basics
Script pour le bouton d'ajout d'un nouveau sous-formulaire
Le script suivant détermine si le nombre maximal d'instances de Subform3 pris en charge se trouve sur le formulaire. Si c'est le cas, le script
affiche un message. Dans le cas contraire, la nouvelle instance de Subform3 est ajoutée au formulaire.
if (advanced.Subform3.instanceManager.count ==
advanced.Subform3.instanceManager.max) {
xfa.host.messageBox("Vous avez atteint le nombre maximum d'articles
autorisés.","Combinaison de concepts du gestionnaire d'instances", 1);
}
else {
advanced.Subform3.instanceManager.addInstance(1);
xfa.form.recalculate(1);
}
Vous pouvez également écrire ce script en utilisant un trait de soulignement (_) pour référencer les propriétés et les méthodes du
gestionnaire d'instances, comme indiqué ci-après :
if (advanced._Subform3.count == advanced._Subform3.max) {
xfa.host.messageBox("Vous avez atteint le nombre maximum d'articles
autorisés.", "Combinaison de concepts du gestionnaire d'instances", 1);
}
else {
advanced._Subform3.addInstance(1);
xfa.form.recalculate(1);
}
Script pour le bouton de suppression d'un sous-formulaire
Le script suivant détermine s'il existe une instance Subform3 sur le formulaire. S'il n'en existe pas, le script affiche un message indiquant
qu'aucune instance n'existe. S'il existe des instances, le script supprime la première instance du formulaire.
if (advanced.Subform3.instanceManager.count == 0) {
xfa.host.messageBox("Il n'y a aucune instance de sous-formulaire à supprimer.",
"Combinaison de concepts du gestionnaire d'instances", 1);
}
else {
advanced.Subform3.instanceManager.removeInstance(0);
}
Vous pouvez également écrire ce script en utilisant un trait de soulignement (_) pour référencer les propriétés et les méthodes du
gestionnaire d'instances, comme indiqué ci-après :
if (advanced._Subform3.count == 0) {
xfa.host.messageBox("Il n'y a aucune instance de sous-formulaire à supprimer.",
"Combinaison de concepts du gestionnaire d'instances", 1);
}
else {
advanced._Subform3.removeInstance(0);
}
Script pour le bouton d'ajout d'une instance au-dessous
L'instruction if-else suivante évite que le script soit traité si le formulaire contient actuellement le nombre maximal d'instances Subform3 :
if (Subform3.instanceManager.count < Subform3.instanceManager.occur.max) {
//oNewInstance permet d'enregistrer une instance de Subform3 créée par la méthode addInstance().
var oNewInstance = Subform3.instanceManager.addInstance(1);
//nIndexFrom et nIndexTo permettent d'enregistrer les valeurs d'index antérieures et postérieures à utiliser
avec la méthode moveInstance().
var nIndexFrom = oNewInstance.index;
var nIndexTo = Subform3.index + 1;
LIVECYCLE DESIGNER ES2 116
Exemples de tâches de script courantes
LiveCycle Designer ES2 Scripting Basics
Dans ce cas, lorsque le script référence la valeur de nIndexFrom, la nouvelle instance de Subform3 est ajoutée au formulaire à l'emplacement
spécifié dans la méthode moveInstance :
Subform3.instanceManager.moveInstance(nIndexFrom, nIndexTo);
}
else {
xfa.host.messageBox("Vous avez atteint le nombre maximum d'articles
autorisés.", "Combinaison de concepts du gestionnaire d'instances", 1);
}
Vous pouvez également écrire ce script en utilisant un trait de soulignement (_) pour référencer les propriétés et les méthodes du
gestionnaire d'instances, comme indiqué ci-après :
if (_Subform3.count < _Subform3.occur.max) {
var oNewInstance = _Subform3.addInstance(1);
var nIndexFrom = oNewInstance.index;
var nIndexTo = Subform3.index + 1;
_Subform3.moveInstance(nIndexFrom, nIndexTo);
}
else {
xfa.host.messageBox("Vous avez atteint le nombre maximum d'articles autorisés.", "Combinaison de concepts
du gestionnaire d'instances", 1);
}
Script pour le bouton de suppression de l'instance active
L'instruction if-else suivante évite que le script soit traité si le formulaire contient actuellement le nombre minimal d'instances Subform3 :
if (Subform3.instanceManager.count > Subform3.instanceManager.occur.min) {
Ce script utilise la méthode removeInstance pour supprimer une instance de Subform3.
Remarque : ce script utilise la valeur parent.parent.index pour indiquer l'instance de Subform3 à supprimer. La référence parent indique
le conteneur de l'objet qui utilise la référence. Dans ce cas, l'utilisation de la référence parent.index indique le sous-formulaire sans titre qui
contient les boutons d'ajout d'une instance au-dessous, de suppression de l'instance active, de déplacement des rangées vers le haut et de
déplacement de rangées vers le bas.
Subform3.instanceManager.removeInstance(parent.parent.index);
}
else {
xfa.host.messageBox("Vous avez atteint le nombre minimum d'articles
autorisés.", "Combinaison de concepts du gestionnaire d'instances", 1);
}
Vous pouvez également écrire ce script en utilisant un trait de soulignement (_) pour référencer les propriétés et les méthodes du
gestionnaire d'instances, comme indiqué ci-après :
if (_Subform3.count > _Subform3.occur.min) {
Subform3.removeInstance(Subform3.index);
}
else {
xfa.host.messageBox("Vous avez atteint le nombre minimum d'articles autorisés.",
"Combinaison de concepts du gestionnaire d'instances", 1);
}
LIVECYCLE DESIGNER ES2 117
Exemples de tâches de script courantes
LiveCycle Designer ES2 Scripting Basics
Script pour le bouton de déplacement des rangées vers le haut
L'instruction if-else suivante évite que le script soit traité si l'instance de Subform3 s'affiche comme la première instance dans la liste :
if (Subform3.index != 0) {
//nIndexFrom et nIndexTo permettent d'enregistrer les valeurs d'index antérieures et postérieures à utiliser
avec la méthode moveInstance.
var nIndexFrom = Subform3.index;
var nIndexTo = Subform3.index - 1;
Subform3.instanceManager.moveInstance(nIndexFrom, nIndexTo);
}
else {
xfa.host.messageBox("L'article actif ne peut pas être déplacé, car il s'agit de la
première instance de la liste.", "Combinaison de concepts du gestionnaire d'instances", 1);
}
Vous pouvez également écrire ce script en utilisant un trait de soulignement (_) pour référencer les propriétés et les méthodes du
gestionnaire d'instances, comme indiqué ci-après :
if (Subform3.index != 0) {
var nIndexFrom = Subform3.index;
var nIndexTo = Subform3.index - 1;
Subform3.moveInstance(nIndexFrom, nIndexTo);
}
else {
xfa.host.messageBox("L'élément actif ne peut pas être déplacé, car il s'agit déjà de la
première instance de la liste.", "Combinaison de concepts du gestionnaire d'instances", 1);
}
Script pour le bouton de déplacement des rangées vers le bas
Cette variable stocke la valeur de l'index de l'instance de Subform3 :
var nIndex = Subform3.index;
L'instruction if-else suivante évite que le script soit traité si l'instance de Subform3 s'affiche comme la dernière instance dans la liste :
if ((nIndex + 1) < Subform3.instanceManager.count) {
// nIndexFrom et nIndexTo permettent d'enregistrer les valeurs d'index antérieures et postérieures à
utiliser avec la méthode moveInstance().
var nIndexFrom = nIndex;
var nIndexTo = nIndex + 1;
Subform3.instanceManager.moveInstance(nIndexFrom, nIndexTo);
}
else {
xfa.host.messageBox("L'article actif ne peut pas être déplacé, car il s'agit de la dernière
instance de la liste.", "Combinaison de concepts du gestionnaire d'instances", 1);
}
Vous pouvez également écrire ce script en utilisant un trait de soulignement (_) pour référencer les propriétés et les méthodes du
gestionnaire d'instances, comme indiqué ci-après :
var nIndex = Subform3.index;
if ((nIndex + 1) < Subform3.instanceManager.count) {
var nIndexFrom = nIndex;
var nIndexTo = nIndex + 1;
_Subform3.moveInstance(nIndexFrom, nIndexTo);
}
else {
xfa.host.messageBox("L'article actif ne peut pas être déplacé, car il s'agit déjà de la
dernière instance de la liste.", "Combinaison de concepts du gestionnaire d'instances", 1);
}
118
Index
champs
A
Adobe Acrobat
conversion de formulaires contenant des
scripts 81
modèle d’objet JavaScript 82
Adobe LiveCycle Designer ES
conversion de formulaires Acrobat 81
script, conversion Acrobat 81
événement
au moment de l'exécution, valeur obligatoire 104
à propos 22, 26
couleur d'arrière-plan, modification 92
calculate, événement de traitement 30
hauteur, ajustement au moment de
l'exécution 103
change, événement interactif 31
mise en surbrillance 105
docClose, événement d'application 33
sommes, calcul 104
docReady, événement d'application 33
click, événement interactif 32
change, événement 31
enter, événement interactif 34
click, événement 32
événement d'application 29
caractères internationaux 16
comparaison entre FormCalc et JavaScript 47
événement de traitement 26
éditeur de script 15
conception de formulaire
exit, événement interactif 34
affichage
événement de script et script 23
affichage d'objets 94
ajout
fonctions FormCalc à des objets 51
convention de dénomination, objet 18
form:ready, événement de traitement 35
objet, modification de la visibilité 109
full, événement interactif 35
couleurs, modification dans l'arrière-plan 92
indexChange, événement de traitement 36
création
initialize, événement de traitement 36
fragments de script 71
calcul et script 20, 21
interactif 27
script dans un objet de script 68
fragments de script 70
layout:ready, événement de traitement 37
script JavaScript à des objets 57
objet de script 68
mouseDown, événement interactif 38
application de traitement par défaut 15
mouseEnter, événement interactif 38
application hôte 78
D
arabe, affichage des caractères 16
débogage
attribution d’un nom
mouseExit, événement interactif 39
mouseUp, événement interactif 39
à propos des calculs et des scripts 72
postOpen, événement d'application 40
objet et variable de conception de formulaire 18
activation de JavaScript Debugger 73
postPrint, événement d'application 41
variable 58
calcul et script 16, 24
postSave, événement d'application 41
exécution de scripts JavaScript 74
postSign, événement d'application 42
utilisation de la méthode messageBox 72
postSubmit, événement d'application 42
C
calcul
à propos 9
déclenchement d'événements 26
preOpen, événement interactif 43
définition
prePrint, événement d'application 43
à propos de la création 18
application de traitement par défaut 15
preSave, événement d'application 44
ajout d'une syntaxe de référence d'objet 22
langage de script par défaut 15, 16
preSign, événement d'application 44
création 20, 21
définition de variables de texte 58
preSubmit, événement d'application 45
débogage 16, 24, 72
docClose, événement 33
script associé 22
exécution 22, 24
docReady, événement 33
script, affichage 23
joindre à un objet 18
types 26
objet actuel, référence 63
E
propriétés et méthodes du modèle
d'événement 80
éditeur de script
événement d'application 29
à propos 11
événement de traitement 26
validate, événement de traitement 45
référence aux objets 60, 62, 63
affichage 15
test 24
événement interactif 27
affichage de scripts et d'événements 23
variable 59
exécution
calcul de base 51
basculement entre la vue uniligne et la vue
multiligne 15
calculate, événement 30
recherche et remplacement du texte 20
enter, événement 34
événement 26
scripts dans la console JavaScript 74
exit, événement 34
expression simple 51
expressions, équivalent Acrobat 79
INDEX 119
JavaScript Console
F
fonction intégrée, FormCalc 50
à propos 72
form:ready, événement 35
exécution de scripts 74
FormCalc
JavaScript Debugger
P
panneau Source XML, recherche et remplacement
du texte 20
postOpen, événement 40
à propos 19, 50
à propos 72
postPrint, événement 41
ajout de fonctions à des objets 51
activation pour LiveCycle Designer ES 73
postSave, événement 41
calcul de base 51
ouverture forcée 73
postSign, événement 42
postSubmit, événement 42
fonction 47
fonction intégrée 50
L
preOpen, événement 43
raccourcis de la syntaxe de référence 63
langage de script, définition 15, 16, 19
prePrint, événement 43
référence à des objets 60, 62, 63
layout:ready, événement 37
preSave, événement 44
syntaxe des fonctions 51
listes déroulantes, obtention des valeurs 102
preSign, événement 44
preSubmit, événement 45
formulaires, conversion d'Acrobat sous LiveCycle
Designer ES 81
M
propagation de l'événement 18
fragments. Voir fragments de script 70
masquage d'objets 94
propriété de présence 109
fragments de script
messageBox, méthode 72
propriétés de script
à propos des fragments de script 70
équivalent Acrobat 79
insertion 71
modèle de script hôte 78
propriétés de la palette Objet 70
full, événement 35
pour le contrôle des sous-formulaires 112
propriétés, contrôle des sous-formulaires à l'aide
de 111
pour le contrôle des sous-formulaires 111
propriétés visuelles, modification pour les objets 99
à propos 80
R
propriétés et méthodes des scripts 80
raccourci, syntaxe de référence 63
modèle d'objet de formulaire XML
contrôle des sous-formulaires au moment de
l'exécution 114
méthodes, contrôle des sous-formulaires à l'aide
de 112
modèle de script hôte 78
modèle d'événement
G
gestionnaire d'instances
équivalent Acrobat 79
méthodes de script
création 70
référence à des objets de script 69
à propos 60
référence à un tableau 66
gestionnaire d'instances 111
règles d'application de plage stricte 54
mouseDown, événement 38
mouseEnter, événement 38
S
mouseExit, événement 39
script
mouseUp, événement 39
à propos 9
à propos de la création 18
H
hébreu, affichage des caractères 16
O
à propos du débogage et du test 72
objet
affichage des scripts joints aux objets 23
I
affichage d’un script joint 23
ajout d'une syntaxe de référence d'objet 22
indexChange, événement 36
calcul et script joint 18
association à des événements 22
initialisation d'événements 26
convention de dénomination 18
création 20, 21
initialize, événement 36
objet de script 68, 69
débogage 16, 24
insertion
objet sans nom, référence dans les calculs et les
scripts 62
exécution 22, 24
fragments de script 71
Objet, palette
propriétés des fragments de script 70
J
JavaScript
objets
exécution de scripts dans la console
JavaScript 74
joindre à un objet 18
objet actuel, référence 63
à propos 19, 53
affichage et masquage 94
référence aux objets 60, 62, 63
plage 54
activation 73
calcul et script, prise en charge 10
test 24
référence dans les calculs et les scripts 60, 62, 63
ajout de scripts à des objets 57
visible ou invisible 109
fonction 47
visuelles, modification des propriétés 99
objet pris en charge dans Acrobat 82
référence à des objets 60, 62, 63
utilisation d'objets dans Acrobat 82
ordre des événements 26
variable 59
scripts
à propos des exemples 92
association à un modèle d'objet JavaScript dans
Acrobat 82
conversion Adobe Acrobat 81
propriétés et méthodes du modèle
d'événement 80
INDEX 120
séquence de traitement des événements 26
V
sous-formulaires
valeur par défaut
contrôle au moment de l'exécution 111, 112, 114
couleur d'arrière-plan, modification 92
valeur, réinitialisation 109
syntaxe de fonction, FormCalc 51
syntaxe de référence
application de traitement, définition 15
langage de script, définition 15, 16
validate, événement 45
variable
à propos 58
à propos 60
Voir aussi variable de texte
ajout au calcul et script joint 22
attribution d’un nom 58
raccourcis pour FormCalc 63
calcul et script 59
référence à des objets 62, 63
référence aux propriétés et aux valeurs d'objet 60
convention de dénomination 18
variable de texte
Voir aussi variable
T
définition 58
test
suppression 59
calcul et script 24
script JavaScript 72
texte, recherche et remplacement dans le panneau
Source XML et dans l'éditeur de script 20
thaï, affichage des caractères 16
visualisation de la définition 59
vietnamien, affichage des caractères 16
vue multiligne, éditeur de script 11, 15
vue uniligne, éditeur de script 11, 15
Was this manual useful for you? yes no
Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Download PDF

advertisement