Donnez vie à vos documents numériques !
 

Activé / Désactivé (Grisé) un bouton selon la valeur d’un champ

abracadabraPDF Forums PDF – Général Activé / Désactivé (Grisé) un bouton selon la valeur d’un champ

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #44871
    nabnub
    Membre

    Salut tout le monde,

    Je suis tombé sur un sujet écrit par le fameux Thom Parker (http://acrobatusers.com/tutorials/print/js_disabling_fields)

    (voici le pdf qu’il illustre son sujet http://www.windjack.com/PDFSamples/DisableFields_AcroForm.pdf )

    J’aimerai savoir comment changer le code pour avoir ce qui suit: 1 champ contenant une valeur et un bouton

    avec les conditions suivante:

    si la valeur du champ est superieur à 70 le bouton est activé

    sinon il est désactivé (grisé) et ne pas etre utilisé

    L’idée je pense, serait d’utilisé “if” pour appeler la fonction ou non, mais faire ce  changement au code dépasse mes connaisances personnels

    merci pour toute aide

Affichage de 11 réponses de 1 à 11 (sur un total de 11)
  • Auteur
    Réponses
  • #57195
    Merlin
    Maître des clés

    Salut,

    A la base on a :

    // Function to enable form fields function
    EnableFormField (cFieldName)
    {
    // First acquire the field to be enabled
    var oFld = this.getField(cFieldName)
    // Next acquire the hidden field with the normal colors
    var oNmlFld = this.getField(“NormalColorsFld”);
    if(oFld)
    {
    // Make field interactive
    oFld.readonly = false;
    // Restore Normal Colors
    oFld.fillColor = oNmlFld.fillColor; oFld.borderColor = oNmlFld.borderColor; oFld.textColor = oNmlFld.textColor;
    }

    }

    // Function to disable form fields function
    DisableFormField(cFieldName)
    {
    // First acquire the field to be disabled
    var oFld = this.getField(cFieldName)
    if(oFld)
    {
    // Make field Read-Only
    oFld.readonly = true;
    // Set Grayed out colors
    oFld.fillColor = [“G”, 0.75]; oFld.borderColor = [“G”, 2/3]; oFld.textColor = [“G”, 0.5];
    }

    }

    Que l’on va transformer ainsi :

    // Function to manage form fields function
    ManageFormField (cFieldName)
    {

    var seuil = this.getField(“CHAMP-SEUIL”).value;
    if (seuil > 70)
    {

    // First acquire the field to be enabled
    var oFld = this.getField(cFieldName)
    // Next acquire the hidden field with the normal colors
    var oNmlFld = this.getField(“NormalColorsFld”);
    if(oFld)
    {
    // Make field interactive
    oFld.readonly = false;
    // Restore Normal Colors
    oFld.fillColor = oNmlFld.fillColor; oFld.borderColor = oNmlFld.borderColor; oFld.textColor = oNmlFld.textColor;
    }

    }
    else
    {

    // First acquire the field to be disabled
    var oFld = this.getField(cFieldName)
    if(oFld)
    {
    // Make field Read-Only
    oFld.readonly = true;
    // Set Grayed out colors
    oFld.fillColor = [“G”, 0.75]; oFld.borderColor = [“G”, 2/3]; oFld.textColor = [“G”, 0.5];
    }

    }
    }

    :Smiley15:

    #57196
    nabnub
    Membre

    Salut Merlin,

    parcontre étant donné qu’on a plus les boutons radio qui alternaient l’état du bouton

    ou met-on les codes qu’ils contenaient? ( DisableFormFieldToGray(“AuthCode”) dans l’un et EnableFormFieldFromGray(“AuthCode”) dans l’autre)

    car il y’a seulement: un champ avec une valeur, un bouton et le code est en document script

    ne faut’il pas aussi ajouter un code pour que la tache soit réaliser et quand ceci doit-etre réalisé ?

    merci encore

    #57197
    Merlin
    Maître des clés

    Désormais c’est le code ManageFormFieldToGray(“AuthCode”) qu’il faut utiliser.

    Quant à savoir où le placer, il faut savoir si le champ “seuil” (celui qui contient la valeur 70) est rempli par l’utilisateur ou bien s’il est rempli par calcul.

    :Smiley01:

    #57198
    nabnub
    Membre

    Je dirais plutôt par calcul car je récupère la valeur depuis un attachement

    PS: là, j’essaye de résoudre le problème qu’avec 1 champ a testé pour comprendre comment ça marche, plus tard j’aimerai essayé de le faire pour une vingtaine d’attachements, j’ai peur que ce soit lourd comme méthode, à moins d’utiliser une fonction qui test chaque champ d’un coup puis active ou non les boutons associés

    #57199
    Merlin
    Maître des clés

    Auquel cas le script ManageFormFieldToGray(“AuthCode”) doit être placé en “Script de calcul” dans le champ “seuil”.

    :Smiley01:

    #57200
    nabnub
    Membre

    Merci, j’ai essayé mais ça ne marche pas vraiment

    Pourrais-tu jeter un coup d’œil à ce pdf

    http://cjoint.com/?DEyxrTjO29S

    merci bien

    PS: la condition > 70 est sur “Result1Row1” || “Result2Row1”


    Aussi, j’aimerai connaitre ton opinion car peut être que la méthode que j’ai choisis n’est pas vraiment la meilleur

    Brièvement: les attachements contiennent les résultats (1er test + 2nd test)
    je récupère ces totaux dans la feuille principale pour pouvoir imprimer le certificat adéquat (e.g. s’il l’élève à été testé sur le Level 2 et qu’au premier test Ou au second il a plus de 70, le bouton print est actif sinon il est désactivé (c’est juste pour éviter le gaspillage par erreur) par ailleurs j’aimerai créer un bouton qui remplit automatiquement le bon certificat avec le nom de l’élève et de l’examinateur.

    Merci pour tout conseil

    #57201
    Merlin
    Maître des clés

    Moi j’arrive à écrire encore plus petit !

    :geek:

    #57202
    nabnub
    Membre

    Merci, j’ai essayé mais ça ne marche pas vraiment

    Pourrais-tu jeter un coup d’œil à ce pdf

    http://cjoint.com/?DEyxrTjO29S

    merci bien

    PS: la condition > 70 est sur “Result1Row1” || “Result2Row1”

    Aussi, j’aimerai connaitre ton opinion car peut être que la méthode que j’ai choisis n’est pas vraiment la meilleure.

    Brièvement: les attachements contiennent les résultats (1er test + 2nd test)
    je récupère ces totaux dans la feuille principale pour pouvoir imprimer le certificat adéquat (e.g. s’il l’élève à été testé sur le Level 2 et qu’au premier test Ou au second il a plus de 70, le bouton print est actif sinon il est désactivé (c’est juste pour éviter le gaspillage par erreur) par ailleurs j’aimerai créer un bouton qui remplit automatiquement le bon certificat avec le nom de l’élève et de l’examinateur.

    Merci pour tout conseil.

    #57203
    nabnub
    Membre

    Je ne sais pas ce qui s’est passé pour la taille du texte, j’ai juste fait un copier/coller de word sans me rendre compte du résultat.

    #57204
    Merlin
    Maître des clés

    Oublie la saisie dans Word, ou alors utilise le copier-coller “texte brut”.
    :geek:

    A priori tout est bon mais les scripts sont “mélangés” : un script s’adresse au document actif ouvert en 1er-plan.
    Il faut d’abord exécuter les instructions destinées au document actif, ouvrir la pièce jointe et ensuite exécuter le code pour la pièce jointe, devenue “active”.
    :idee:

    #57205
    nabnub
    Membre

    récapitulons, dans mon document il y a ce qui suit:

    1/ un code pour récupérer la valeur dans un attachement
    2/ un bouton ‘reset’ (c’était la seul méthode que j’avais trouvé) qui en fait met à jour les valeurs récupérées
    3/ et notre code pour désactivé le bouton selon la condition des >70

    est-ce que 3 doit etre premier, si oui comment fait, car je ne vois pas vraiment, merci pour ton aide

    PS: je viens juste de réaliser une petite érreur: var seuil = this.getField(“Result1Row1“).value; // j’avais écrit “Text1

Affichage de 11 réponses de 1 à 11 (sur un total de 11)
  • Vous devez être connecté pour répondre à ce sujet.