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. Pour plus d’informations, voir Création d’actions dans les formulaires.

Dans cet exemple, tous les objets de formulaire sont affichés dans le formulaire.

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 afficher cet exemple de script et d’autres exemples, consultez le Centre des développeurs 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 = "invisible"; 
        break; 
    case 'Hidden (Exclude from Layout)': 
        Subform1.presence = "hidden"; 
        break; 
    default: 
        Subform1.presence = "visible"; 
        break; 
}

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++) {

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 = "invisible"; 
                break; 
            case 'Hidden (Exclude from Layout)': 
                Subform1.nodes.item(nCount).presence = "hidden"; 
                break; 
            case 'Visible (but Don\'t Print)': 
                Subform1.nodes.item(nCount).presence = "visible"; 
                Subform1.nodes.item(nCount).relevant = "-print"; 
                break; 
            case 'Invisible (but Print Anyway)': 
                Subform1.nodes.item(nCount).presence = "invisible"; 
                Subform1.nodes.item(nCount).relevant = "+print"; 
                break; 
            default: 
                Subform1.nodes.item(nCount).presence = "visible"; 
                break; 
        }     
    } 
}

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();