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