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

#50474
alex
Participant

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;
}