abracadabraPDF › Forums › PDF – Général › Remplissage de 2 champs par une valeur issue d’un menu déroulant
- Ce sujet est vide.
-
CréateurSujet
-
4 décembre 2013 à 09:33 #44728
nabnub
MembreSalut,
décidement c’est la semaine de la découverte pour moi sur ce site
Je suis tombé sur cet outil: http://abracadabrapdf.net/pdf-de-demo/formulaires/menus-ave-remplissage-dun-champ/
j’ai essayé de modifier un peu le script pour pouvoir remplir 2 champs qui corresponderait au prénom et nom, j’ai pensé a créer 2 variables pour prénom et noms mais sans véritable succés
ou bien peut on créer une variable avec 2 parametres?
c’est que j’essaye de faire: dans le menu on aurait par exemple: classe 1, classe 2, classe 3 etc… et pour chaque classe des noms et prénoms. Lorsque l’un des élèves est sélectioné son nom et prénom sont remplit dans 2 champs
-
CréateurSujet
-
AuteurRéponses
-
4 décembre 2013 à 10:25 #56337
MerlinMaître des clésBonjour,
Le sujet a déjà été abordé plusieurs fois sur le forum, faire une recherche sur « liste déroulante » te donnera une première série de résultats intéressants.
:Smiley15:4 décembre 2013 à 11:45 #56338nabnub
MembreSalut Merlin
en fait avec une liste déroulante je sais le faire…
mais j’essaye d’utiliser app.popUpMenu pour ceci, (je n’arrive avoir comment créer 2 variables, si c’est ça qu’il faut faire)
j’ai trouvé une méthode utilisant le XML, mais je cherche plutot une méthode avec une jolie fonction a écrire
http://www.pdfscripting.com/public/FreeStuff/PDFSamples/PopulateFieldsFromXML_Sample.pdf
merci
4 décembre 2013 à 12:39 #56339
MerlinMaître des clésEst-ce qu’il ne serait pas plus simple de concaténer les colonnes « nom » et « prénom » de façon à n’en faire qu’une seule entrée ?
D’autant que dans ce cas précis ça ne devrait pas tellement changer leur nombre.
:Smiley03:5 décembre 2013 à 16:39 #56340nabnub
Membrej’ai essayé depuis hier d’écrire quelque chose mais sans véritable succés
serait-il possible (svp) d’avoir une solution
merci beaucoup
par la suite j’essayerai de travailler sur la version utilisant le XML, je pense qu’il y a que quelques modifications à apporter à la fonction principale pour avoir des sous menus, le probleme de cette méthode s’est qu’elle requiert l’installation des fichiers par l’utilisateur
6 décembre 2013 à 08:41 #56341nabnub
Membrej’ai jété un coup d’oeil à l’Acrobat JavaScript Reference, il y a aussi la possibilité d’utiliser app.popUpMenuEx
apparement on peut spécifier la valeur à retourner pour chaque item mais je ne sais pas comment codé ceci proprement,
l’idée je pense est de séparer le nom et prénom
mais je ne sais pas comment écrire ça
j’ai essayé un truc du genre:
Code:var reply = app.popUpMenuEx
(
{cName: « -« },
{cName: « Year 1 », oSubMenu:
[{cName: « Surname1 + « | » + Name1″}, {cName: « Surname2 + « | » + Name2″},cReturn:…]
},
{cName: « Year 2 », oSubMenu:
[{cName: « Surname3 + « | » + Name3″}, {cName: « Surname4 + « | » + Name4″},cReturn: …]
},
)pour cReturn:…. je ne sais pas trop quoi écrire
d’autant plus que le cas étudié ici est juste pour 2 classes avec 4 éleves au total, j’espere pouvoir par la suite être capable de modifier la solution pour 6 classes de 20 eleves
dans tout les cas, merci pour toutes suggestions
6 décembre 2013 à 09:13 #56342
MerlinMaître des clésSalut,
Tout est là :
– http://abracadabrapdf.net/forum/index.php/topic,1178.0.html
– http://abracadabrapdf.net/forum/index.php/topic,1891.msg9607.html#msg9607:bonjour:
6 décembre 2013 à 10:33 #56343nabnub
MembreSalut,
si je comprends bien des liens que tu as postés, tu me suggère plutot d’utiliser cette méthode:
une liste déroulante pour choisir la classe, une fois la classe choisi, je peux dans une autre liste déroulante choisir le prénom qui associera automatique dans un autre champ le nom
j’ai jetté un coup d’oeil au code et je pense que je suis capable d’apporter les modifications nécessaires pour l’adapater à ma situation (c’est ce que je vais faire pour le moment)mais en fait j’essaye plutôt d’utiliser une méthode similaire a celle de Thom Parker que je trouve plus directe : juste un bouton dans lequel on peut naviguer direquetement à l’élève via la classe (submenu), la méthode de Thom utilise 2 fichiers que l’utilisateur doit installer préablement dans le dossier Javascript,
quel sont les modifications à apporter a son code (svp) pour parvenir à mon but?
je pense que la partie importante du code se trouve ici:
Code:// Test and then search Customer XML Data
// if it was correctly parsed
var aNames = [];
if(xmlData)
{ // Stream data is valid, but not guarenteed to be XML
if(typeof(xmlData) != « xml »)
{
var cMsg = « Customer Data File does not contain XMLnnAborting Operation »;
app.alert(cMsg,0,0,cAlertTitle);
}
else
{ // Data is valid, parsed XML
//Check to see if it is the correct XML Gramar
var nLen = xmlData.child(« Customer »).length();
if(nLen == 0)
{
var cMsg = « Customer Data File does not contain any CustomersnnAborting Operation »;
app.alert(cMsg,1,0,cAlertTitle);
}
else
{
for(var i=0;i{
aNames.push(xmlData.Customer.Name.text() + « : » + xmlData.Customer.Company.text());
}
}
}
}
if(aNames.length)
{
// Display list of customers to user in popup menu
cRtn = app.popUpMenu.apply(app,aNames);
if(cRtn)
{// Find Customer that matches selection
var cName = cRtn;
for(var i=0;i{
if(cName == (xmlData.Customer.Name.text() + « : » + xmlData.Customer.Company.text() ))
break;
}
if(i{// Fill Fields with selected Data
var oFld = oDoc.getField(« Name »);
if(oFld)
oFld.value = xmlData.Customer.Name.text();
oFld = oDoc.getField(« Company »);
if(oFld)
oFld.value = xmlData.Customer.Company.text();oFld = oDoc.getField(« Email »);
if(oFld)
oFld.value = xmlData.Customer.Email.text();
}
}
}
app.endPriv();7 décembre 2013 à 11:44 #56344
MerlinMaître des cléssi je comprends bien des liens que tu as postés, tu me suggère plutot d’utiliser cette méthode
En vérité, je te suggère de te faire aider par quelqu’un de plus compétent que moi sur le sujet parce-que je suis loin d’avoir le niveau d’Alex ou de Thomp !
:joker:7 décembre 2013 à 13:50 #56345nabnub
Membrelol
ok mais je ne les vois pas dans les parages, sont ils partis en vacances?
en attendant je vais essayer de fouiner ici et ailleurs pour trouver une solution
merci
7 décembre 2013 à 16:08 #56346
MerlinMaître des clésVa savoir…
En tout cas Thomp ne fréquente que ce forum américain : http://answers.acrobatusers.com
:Smiley01:8 décembre 2013 à 00:05 #56347nabnub
MembreRésolu
Code:var aParams = [
{cName: « Lincoln », oSubMenu: [
{cName: « Abraham », cReturn: « Abraham|Lincoln »},
{cName: « Mary Todd », cReturn: « Mary Todd|Lincoln »},
{cName: « Robert Todd », cReturn: « Robert Todd|Lincoln »},
{cName: « Edward Baker », cReturn: « Edward Baker|Lincoln »},
{cName: « William Wallace », cReturn: « William Wallace|Lincoln »},
{cName: « Thomas », cReturn: « Thomas|Lincoln »}
]
},
{cName: « Buffett », oSubMenu: [
{cName: « Jimmy », cReturn: « Jimmy|Buffett »},
{cName: « Jane », cReturn: « Jane|Buffett »},
{cName: « Savannah Jane », cReturn: « Savannah Jane|Buffett »},
{cName: « Sarah Delaney », cReturn: « Sarah Delaney|Buffett »},
{cName: « Cameron Marley », cReturn: « Cameron Marley|Buffett »}
]
}
];
var resp = app.popUpMenuEx.apply(app, aParams);
// Populate the fields with the selected values
if (resp) {
var names = resp.split(« | »);
getField(« name »).value = names[0];
getField(« surname »).value = names[1];
} else {
getField(« name »).value = « »;
getField(« surname »).value = « »;
}
-
AuteurRéponses
- Vous devez être connecté pour répondre à ce sujet.
