Donnez vie à vos documents numériques !
 

Répondre à : Lier les choix possible d’une liste déroulante à une deuxième. RÉSOLU

abracadabraPDF Forums PDF – Général Lier les choix possible d’une liste déroulante à une deuxième. RÉSOLU Répondre à : Lier les choix possible d’une liste déroulante à une deuxième. RÉSOLU

#50512
Anxionet
Membre

Bonjour;
J’essai d’utiliser ce script pour une formulaire avec une seule couple. Ma question est très simple, peut être pour vous, mais je n’y connais pas beaucoup à ce sujet.
Où je dois coller le premier script?
Le deuxième pour le remplissage de la liste fille, j’ai vu qui va sur l’onglet format, mais pour le premier je ne vois pas où le coller. Merci de votre aide !

Nous sommes donc sous Acrobat PRO (versions 7,8,9), le formulaire a été développé avec AcroForm.
Deux scripts font le travail:
Le premier, (qui ne travaille qu’une fois à l’ouverture du document par exemple) assure le remplissage des items des sélecteurs (listes déroulantes mères) ainsi que la construction des tables Liste(x,y)
x est l’index du couple mere/fille.
y est l’index de l’occurence mère.

function RemplissageMere()
{
//Remplissage du premier menu déroulant Liste1:
console.clear();
//Paramétrage du nombre de couples mere/fille du document
NbreCouples=5;
//On définit les tableaux:
Selecteur=new Array();
Liste=new Array();
indexCouple=1;
  while (indexCouple  {
  Selecteur[indexCouple]=new Array();
  Liste[indexCouple]=new Array();
  indexCouple=indexCouple+1;
  }
//On définit les listes mères/filles (autant de Listes filles que d’items du Selecteur mère), le nombre d’items est libre
//Premier couple par exemple:
Selecteur[1]=[“Garçons”,”Filles”]
Liste[1][0]=[“Jean”,”Alain”,”François”,”Pierre”,”Damien”,”Alex”,”Mike”]
Liste[1][1]=[“Brigitte”,”Nicole”,”Marie”,”Julie”,”Cécile”,”Marion”,”Diane”,”Judith”,”Samia”,”Colette”,”Christine”]
//Fin du premier couple
//Second couple pour exemple:
Selecteur[2]=[“France”,”Allemagne”,”Italie”,”Espagne”,”Belgique”]
Liste[2][0]=[“Paris”,”Bordeaux”,”Lille”,”Strasbourg”,”Lyon”,”Grenoble”]
Liste[2][1]=[“Berlin”,”Bonn”,”Munich”,”Brême”];
Liste[2][2]=[“Rome”,”Milan”,”Gênes”,”Bologne”];
Liste[2][3]=[“Madrid”,”Barcelonne”,”Valence”];
Liste[2][4]=[“Bruxelles”,”Gand”,”Namur”];
//Fin du second couple
//Couple 3 pour exemple:
Selecteur[3]=[“Europe”,”Amérique”]
Liste[3][0]=[“Bruxelles”,”Paris”,”Oslo”,”Londres”,”Berlin”,”Madrid”,”Rome”,”Athène”,”Milan”]
Liste[3][1]=[“New-York”,”Montreal”,”Toronto”,”La Paz”,”Panama”];
//Fin du couple 3.
//Couple 4 pour exemple:
Selecteur[4]=[]
Liste[4][0]=[]
//Fin du couple 4
//Couple 5 pour exemple:
Selecteur[5]=[];
Liste[5][0]=[];
//Fin du couple 5
//………………………..Autres définitions si nécessaire.
//Remplissage des listes mères (sélecteurs)
indexCouple=1;
  while (indexCouple  {
  this.getField(“ListeMere”+indexCouple).clearItems();
  this.getField(“ListeFille”+indexCouple).clearItems();
  indexItem=0;
    while(indexItem    {
    this.getField(“ListeMere”+indexCouple).insertItemAt(Selecteur[indexCouple][indexItem],indexItem,indexItem)
    indexItem=indexItem+1;
    }
  indexCouple=indexCouple+1;
  }
//Fin remplissage Liste mère
}

Un second script général, lançé par les sélecteurs, met à jour les listes filles:
Attention à son mode de lancement.onglet Format>
Catégorie de format>Personnalisé
Script de touches personnalisé>

function RemplissageFille()
{
console.clear();
//On définit les items de Liste fille de rang indexCouple à chaque fois que le sélecteur mère est solliscité:
//Nom du sélecteur solliscité:
NomSelecteur=event.target.name;
console.println(“Sélecteur activé:”+NomSelecteur)
//Détermination du rang:
longueuralpha=”ListeMere”.length;
console.println(“Longueur de la partie alpha:”+longueuralpha)
indexCouple=NomSelecteur.substring(longueuralpha,NomSelecteur.length);
console.println(“index du couple:”+indexCouple)
ffille=this.getField(“ListeFille”+indexCouple);
console.println(“Liste mise à jour: ListeFille”+indexCouple)
ffille.delay=true;
ffille.clearItems();
indexItem=0;
while(indexItem {
ffille.insertItemAt(Liste[indexCouple][event.changeEx][indexItem],indexItem,indexItem)
indexItem=indexItem+1;
}
ffille.currentValueIndices=0;
ffille.delay=false;
}