Créer un menu dynamique à partir d'une liste de choix  (Lu 138 fois) Partager ce sujet Imprimer

1 B


Braindead  16 mars 2021 : 16:01

Bonjour,

Après des heures de tests en vain je me tourne vers vous.
Je souhaiterais créer un menu en fonction de choix de 2 listes.
Pour les listes et récupérer leur valeur : OK

Par contre comment je peux créer des items par programmation et que au clic cela aille vers des pages ou signets ?

En algo, ça donnerait :
Si liste1 = 1 ET liste2 = 1 ALORS
Crée menu "Item 1" lien "Page3"
Crée menu "Item 2" lien "Page 18"
Crée menu "Item 3" lien "Page 40"
etc.

Et que les menus se créent toujours de la même façon. Comme un sommaire en fait.
Quelqu'un saurait-il m'aider et/ou me donner des pistes ?

Merci d'avance de votre aide !

IP archivée


Merlin  17 mars 2021 : 11:51

Bonjour et bienvenue

En JavaScript ça donne :

if (this.getField("LISTE1").value == 1 && this.getField("LISTE2").value == 1) {
this.getField("LISTE3").setItems([["Item 1", "this.pageNum = 0"],["Item 2", "this.pageNum = 17"], ["Item 3", "this.pageNum = 39"]]);
}


Tu sauras tout sur setItems en allant sur cette page :
https://help.adobe.com/en_US/acrobat/acrobat_dc_sdk/2015/HTMLHelp/Acro12_MasterBook/JS_API_AcroJS/Field_methods.htm?rhhlterm=setItems%20&rhsyns=%20#XREF_90526_setItems

IP archivée


Braindead  17 mars 2021 : 11:57

Bonjour Merlin,


Merci pour ta réponse. Ca me donne une très bonne piste en effet.
Mais j'aurais bien voulu que mon résultat se présente sous forme de sommaire et pas de liste. Manière que l'utilisateur puisse bien voir tous les choix qui s'offrent à lui.


A moins que je puisse mettre la liste 3 de façon à ce qu'elle présente plusieurs résultats (je n'ai pas testé) ?


Merci de ton aide en tout cas :)

IP archivée


Merlin  17 mars 2021 : 13:06

Trop facile : il suffit d'utiliser une Zone de liste (listbox) au lieu d'une Liste déroulante (combobox), comme ces deux types de champs partagent presque toutes leurs propriétés le script ne change pas.

IP archivée


Braindead  17 mars 2021 : 13:58

OK en effet c'est simple vu comme ça :)


J'ai mis en oeuvre tout ceci. Ci-joint mon fichier de test. Par contre, chez moi, au clic sur l'item de la liste 3 cela ne va pas à la page XXX.


J'ai bien regardé la documentation et je ne vois pas. Faut-il que je récupère la valeur de la selection de la liste3 pour ensuite jouer une action pour changer de page (et quelle action...?) ?


Merci encore de tes précieux conseils !

IP archivée


Merlin  17 mars 2021 : 15:05

C'est parfois le problème avec les scripts non testés et non vérifiés postés sur les forums…  :siffle:

Utilise plutôt ceci comme script :

if (this.getField("LISTE1").value == 1 && this.getField("LISTE1").value == 1) {
this.getField("LISTE3").setItems([["Item 1", "1"],["Item 2", "18"], "Item 3", "40"]]);
}



Et place ce script en "Changement de sélection" dans la Zone de liste :

if ( !event.willCommit && (event.changeEx != "") ) {
   this.pageNum = Number(event.changeEx)-1;
}


Comme j'ai ajouté "-1" directement dans le script on peut utiliser directement le numéro de page voulu en valeur d'exportation.
 :Smiley03:

IP archivée


Braindead  17 mars 2021 : 15:18

C'est trop fort merci :)


Bon j'ai un peu l'impression de t'avoir fait écrire tout le code ... merci bcp de ton aide.


Je partage le PDF final si cela peut en aider, on ne sait jamais

IP archivée