Donnez vie à vos documents numériques !
 

Liste déroulante et changement d’image

abracadabraPDF Forums PDF – Général Liste déroulante et changement d’image

Étiqueté : 

  • Créateur
    Sujet
  • #72874
    Kcirtap24
    Participant

    Bonsoir,

    Je souhaite faire une liste déroulante (Dropdown) avec comme liste d’éléments :  bleu jaune vert rouge .

    L’idée étant de sélectionner  bleu pour faire apparaitre la gommette bleu , Jaune pour la gommette jaune etc..

    J’avais fait un peu ce genre la, avec deux images l’une sur l’autre avec  deux Check Box . Mais là j’aimerai par manque de place utiliser Dropdown .

    Avez vous un exemple de fichier pdf ou un bout de code que j’essai de faire cette réalisation   svp ?

    Vous en remerciant par avance

    Patrick.

Affichage de 20 réponses de 1 à 20 (sur un total de 20)
  • Auteur
    Réponses
  • #72879
    bebarth
    Maître des clés

    bonjour,
    Voici un script de touches personnalisé pour le menu déroulant :
    if (!event.willCommit) {
    switch (event.changeEx) {
    case "Bleu":
    var couleur=["RGB",0,0,1];
    break;
    case "Jaune":
    var couleur=["CMYK",0,0,1,0];
    break;
    case "Vert":
    var couleur=["RGB",0,1,0];
    break;
    default:
    var couleur=["RGB",1,0,0];
    }
    this.getField("gommette").fillColor=couleur;
    }

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    #72884
    Kcirtap24
    Participant

    Bonjour, et bon dimanche merci pour la réponse rapide.

    Voilà ce que j’ai modifié j’ai laissé le carre de couleur et j’ai ajouté les gommettes

    J’ai crée une sélection vide pour ne pas avoir de gommette visible (je ne sais pas si c’est comme cela qu’il faut faire mais ça fonctionne !)

     

    if (!event.willCommit) {
    switch (event.changeEx) {
    case ” “:
    var couleur=[“RGB”,1,1,1];

    this.getField(“ijaune”).display = display.hidden;
    this.getField(“irouge”).display = display.hidden;
    this.getField(“iverte”).display = display.hidden;
    this.getField(“ibleu”).display = display.hidden;
    break;
    case “Bleu”:
    var couleur=[“RGB”,0,0,1];
    this.getField(“ijaune”).display = display.hidden;
    this.getField(“irouge”).display = display.hidden;
    this.getField(“iverte”).display = display.hidden;
    this.getField(“ibleu”).display = display.visible;
    break;
    case “Jaune”:
    var couleur=[“CMYK”,0,0,1,0];
    this.getField(“irouge”).display = display.hidden;
    this.getField(“iverte”).display = display.hidden;
    this.getField(“ibleu”).display = display.hidden;
    this.getField(“ijaune”).display = display.visible;
    break;
    case “Vert”:
    var couleur=[“RGB”,0,1,0];
    this.getField(“ijaune”).display = display.hidden;
    this.getField(“irouge”).display = display.hidden;
    this.getField(“ibleu”).display = display.hidden;
    this.getField(“iverte”).display = display.visible;
    break;
    default:
    var couleur=[“RGB”,1,0,0];
    this.getField(“ijaune”).display = display.hidden;
    this.getField(“ibleu”).display = display.hidden;
    this.getField(“iverte”).display = display.hidden;
    this.getField(“irouge”).display = display.visible;
    }
    this.getField(“gommette”).fillColor=couleur;
    }

    Merci bonne après midi.

    Patrick

    Attachments:
    You must be logged in to view attached files.
    #72886
    bebarth
    Maître des clés

    bonjour,
    Dans ce cas on peut simplifier un peu le script :
    if (!event.willCommit) {
    this.getField("gommette").fillColor=["RGB",1,1,1];
    this.getField("ijaune").display=display.hidden;
    this.getField("irouge").display=display.hidden;
    this.getField("iverte").display=display.hidden;
    this.getField("ibleu").display=display.hidden;
    switch (event.changeEx) {
    case "Bleu":
    this.getField("gommette").fillColor=["RGB",0,0,1];
    this.getField("ibleu").display=display.visible;
    break;
    case "Jaune":
    this.getField("gommette").fillColor=["CMYK",0,0,1,0];
    this.getField("ijaune").display=display.visible;
    break;
    case "Vert":
    this.getField("gommette").fillColor=["RGB",0,1,0];
    this.getField("iverte").display=display.visible;
    break;
    case "Rouge":
    this.getField("gommette").fillColor=["RGB",1,0,0];
    this.getField("irouge").display=display.visible;
    }
    }

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    #72888
    Kcirtap24
    Participant

    Merci beaucoup,👍

    Très bon dimanche et 1er Mai 😀

    Patrick.

    #72889
    Merlin
    Maître des clés

    Bonjour

     

    À la place de plusieurs boutons de couleur, j’aurais plutôt utilisé une case à cocher avec un style de case “rond” et je lui aurait fait changer de couleur en même temps que la gommette.

    #72893
    Kcirtap24
    Participant

    Bonjour, merci pour cette deuxième piste, à bientôt.

    Bon 1 er mai à tous, et encore merci de votre aide.

    Patrick

    #72897
    jctremblay
    Participant

    Quel beau hasard, je suis justement en train de faire ce genre de manipulation pour changer la couleur. C’est parfait. Par contre j’aimerai mettre ce script dans un fonction de script de document. Et configurer les variables (les champs «gommette» et la liste «couleurs») pour qu’ils soient automatiser selon le nom des champs ex: «couleurs.0» affecteras automatiquement «gommette.0», «couleurs.1» affecteras «gommette.1», etc.. Cela serait plus facile à modifier, et surtout lorsqu’une série de champs «couleurs/gommette» se retrouve dans une page.

    Je sais que ça se fait… mais je suis perdu! 😀

    #72898
    jctremblay
    Participant

    Actuellement j’ai ceci comme script de document. Et je ne met que light(“gommette.2”); dans la zone de script de touche personnalisé

    function light(gommette)
    {
    var field = this.getField(gommette);
    if (!event.willCommit) {
    switch (event.changeEx) {
    case "Oui":
    var couleur=["RGB",0,1,0];
    break;
    case "Partiellement":
    var couleur=["RGB",1,1,0];
    break;
    case "Non":
    var couleur=["RGB",1,0,0];
    break;
    default:
    var couleur=["T"];
    }
    this.getField(gommette).fillColor=couleur;
    }
    }

    J’aimerai éliminer la nécessité d’entrée le nom du champs de la gomette.

    #72899
    Merlin
    Maître des clés

    A priori c’est faisable (en récupérant le numéro suffixe ?) mais il faudrait que tu en dises plus car je ne comprend pas bien le but, sinon en supposant qu’il y aura plusieurs champs.

    #72900
    bebarth
    Maître des clés

    bonjour,
    Si j’ai bien compris, tu dois appeler la fonction avec :
    light(event.target.name); N’importe quoi !!! ça va changer la couleur du menu déroulant…

    Comme le dit Merlin, si tu as plusieur menus déroulants et plusieurs gommettes avec le même indice, lu appelles  la fonction avec :
    light(event.target.name.substr(event.target.name.indexOf(".")+1));

    @+
    😎

    • Cette réponse a été modifiée le il y a 1 année et 1 mois par bebarth.
    #72902
    jctremblay
    Participant

    Oui, il y aura plusieurs séries de champs liste «couleurs» et «gommette».

    Si j’appelle la fonction
    light(event.target.name.substr(event.target.name.indexOf(".")+1));
    Il ne se passe rien, probablement car à la fin dans le this.getField(gommette).fillColor=couleur;
    le suffix n’est pas ajouter. L’extraction du suffix devrait être récupérer dans le script de document et non pas dans l’appelle de la fonction.

    je continue mes essai.

    #72903
    bebarth
    Maître des clés

    Peux-tu partager un fichier ?

    @+
    😎

    #72904
    jctremblay
    Participant

    Le voici…

    Attachments:
    You must be logged in to view attached files.
    #72907
    jctremblay
    Participant

    J’ai pensé à quelques choses comme ça, mais cela ne fonctionne pas.

    function light()
    {
    var cName = event.target.name;
    var nSuffix = cName.substring(cName.lastIndexOf('.')+1);

    if (!event.willCommit) {
    switch (event.changeEx) {
    case "Oui":
    var couleur=["RGB",0,1,0];
    break;
    case "Partiellement":
    var couleur=["RGB",1,1,0];
    break;
    case "Non":
    var couleur=["RGB",1,0,0];
    break;
    default:
    var couleur=["T"];
    }
    this.getField("gomette." + nSuffix).fillColor=couleur;
    }
    }

     

    #72908
    jctremblay
    Participant

    Putain… mon dernier script modifié marche bien. J’avais oublié un «m» dans gommette… 😮

    #72909
    bebarth
    Maître des clés

    👍

    Juste pour info, voici comment j’aurais écrit le script :

    // Fonction en script de document
    function light(nSuffix) {
    switch (event.changeEx) {
    case "Oui":
    var couleur=["RGB",0,1,0];
    break;
    case "Partiellement":
    var couleur=["RGB",1,1,0];
    break;
    case "Non":
    var couleur=["RGB",1,0,0];
    break;
    default:
    var couleur=["T"];
    }
    this.getField("gommette."+nSuffix).fillColor=couleur;
    }

    // Script de touches personnalisé
    if (!event.willCommit) light(event.target.name.substr(event.target.name.indexOf(".")+1));

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    #72911
    jctremblay
    Participant

    C’est bon aussi… 😀

    Tu sais pourquoi, un bouton réinitialiser le formulaire ne remets la couleur de défaut des «gommettes»?

    #72912
    jctremblay
    Participant

    J’ai utilisé ceci au lieu d’un bouton Réinitialiser standard et cela marche.

    this.resetForm();
    var gReset = this.getField("gomette");
    gReset.fillColor = color.transparent;

    #72913
    Merlin
    Maître des clés

    “Réinitialiser” signifie “revenir à la valeur par défaut” (reset to default value).

    Ça ne concerne que la valeur du champ et donc aucun autre de ses attributs.

    #72916
    jctremblay
    Participant

    Cela a du sens… même si en réinitialisant les champs de listes, je n’attendais à ce qu’ils exécutent à nouveau la fonction de script personnalisé incluse dans ceux-ci. Ce qui n’est pas le cas.

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