Toutes mes réponses sur les forums
-
AuteurRéponses
-
alex
ParticipantVoici donc ma seconde manière à la fois plus simple et plus complexe.
On saisit les valeurs d’export dans le menu déroulant “DropSown1”, onglet “Options”.
Cette fois le script est encore associé au menu déroulant “DropSown1”, mais sous l’onglet “Format”, script de touche personnalisé.
Onglet “Options”, il ne faut pas nécessairement cocher la case “Valider la valeur sélectionnée immédiatement”.Plus simple : la saisie des données.
Moins simple à comprendre : le script associé à l’évènement :if(!event.willCommit)
{
bb=this.getField(“BRow1”);
bb.value=this.event.changeEx;
}Bonsoir.
alex
ParticipantBonjour,
Voir maquette jointe. Le script est associé au menu déroulant “DropDown1”, onglet “Validation” “Exécuter le script de validation personnalisé”.
Attention, onglet “Options”, il faut cocher la case “Valider la valeur sélectionnée immédiatement”.
Cette solution est basique:
bb=this.getField(“BRow1”);
bb.value=””;
if(saisie==”choix A”){bb.value=20.59;}
if(saisie==”choix B”){bb.value=41.17;}
if(saisie==”choix C”){bb.value=54.76;}
Une autre méthode consiste à associer les valeurs aux items du menu déroulant. Je donnerai également une maquette illustrant cette méthode apparemment plus simple…Amitiés à tous.
alex
Participant//Un peu de logique combinatoire !
Si je lis bien, une seule condition devrait suffire à rendre un objet visible, ici un champ de formulaire.
fff=this.getField(“Nom du champ”);
if(ccc==”Oui”&adher==”Oui”){
//condition satisfaite
fff.display=display.visible;
}
else
{
//condition non satisfaite (tous les autres cas)
fff.display=display.hidden;
}alex
ParticipantVoici corrigé le pb des débuts d’années. Reste l’analyse de la validité des saisies jour/mois/année.
Merci Merlin pour l’info. Effectivement, ça m’aurait bien aidé pour écrire le script.
Amitiés à tous
Alexalex
ParticipantVoici ma copie provisoire revisitée et téléchargeable j’espère.
On peut y faire des tests et elle est facilement transposable pour obtenir le calcul de la semaine du jour courant.
Le bouton Today affiche la date du jour et la semaine correspondante.
Toute saisie du jour, du mois ou de l’année active le calcul de la semaine. Attention, aucun contrôle des saisies n’est configuré (on peut saisir un 15ème mois).
Il reste à gérer l’affichage des 52 èmes et 53èmes semaines des années n-1 qui débordent sur les premiers jours de l’année en cours.
Pour l’instant j’affiche 0 pour les journées concernées (par exemple pour 2016 et 2017).Une ultime version réglera ce problème et les contôles. Un peu de patience…
Amitiés à tous.
alex
ParticipantMerci pour l’info,
Voici ma copie provisoire revisitée, il reste à gérer l’affichage des 52 èmes et 53èmes semaines des années n-1 qui débordent sur l’année en cours. Pour l’instant j’affiche 0 pour les journées concernées.alex
ParticipantOops, je dois revoir mon script pour la détermination de la première semaine de chaque année. Il y a sans doute une règle à respecter que je vais chercher et corriger en conséquence.
Mais oui, il y a bien des semaines 53 qui sont aussi la semaine 1 de l’année qui suit !
Patience.alex
ParticipantBonjour à tous,
Non aucune retouche à faire d’une année sur l’autre. On fait le choix 1-52 ou 1-53 une fois pour toutes.alex
ParticipantBonjour à tous,
Voici une maquette répondant à votre problème.
Le script weekcalc() fait le travail.Il est conçu de manière à pouvoir faire des tests sur la date d’entrée en désactivant la ligne:
dd=new Date();
Il calcule de 1 à 53 ou de 1 à 52 si on active la ligne:
//if(weeksNum>52){weeksNum=1;}
Activer la ligne:
//console.show();
pour afficher les calculs dans la console.
Le script:
function weekcalc()
{
console.clear();
//Date pour tests attention, mois de 0 à 11
dd=new Date(2015,11,27);
//Date du jour
dd=new Date();
//
year=dd.getFullYear();
month=dd.getMonth();
dd0=new Date(year,0,0);
console.println(dd0);
console.println(dd);
//jour de la semaine du 31 dec precedant.
ref=dd0.getDay();
console.println(“jour de reference 31 dec de l annee qui precede=”+ref)
delta=(dd.getTime()-dd0.getTime())/1000/60/60/24;
console.println(“delta en jours=”+delta);
weeksNumDef =(delta+ref)/7;
console.println(“calcul semaine sans arrondi par exces=”+weeksNumDef);
weeksNum = Math.ceil((delta+ref)/7);
console.println(“calcul semaine arrondi par exces=”+weeksNum);
//if(weeksNum>52){weeksNum=1;}
this.getField(“Semaine”).value=weeksNum;
//console.show();
}alex
ParticipantUn truc comme ça ferait-il l’affaire ?
Voir script de validation personnalisé du champs de saisie dans la maquette jointe.
Le nombre de caractères est paramétrable (longueur).Beaucoup de variantes sont possibles à partir de ce script:
8 caractères alphabétiques uniquement.
8 chiffresuniquement.
Avoir un minimum de chiffres, de nombres, de majuscules ou minuscules.
etc.alex
ParticipantBonjour à tous,
Voici ma contribution (une maquette) à votre problème que j’ai repris disons, à la base….Un seul script de calcul associé au champ “Total” fait l’affaire, ici avec 5 termes à additionner.
Pour voir les résultats intermédiaires (console.println), afficher la console.Le nombre de termes et l’ordre de l’arrondi sont des paramétrables.alex
ParticipantBonjour à tous,
Voici votre maquette. Pour chaque sélecteur, veiller à cocher la case “Valider la valeur sélectionnée immédiatement” (Onglet “Options”).
Un seul script de calcul est alors nécessaire pour obtenir le résultat dans le champ “champ”:v1=this.getField(“ld1”).value;
v2=this.getField(“ld2”).value;
v3=this.getField(“ld3”).value;
v4=this.getField(“ld4”).value;
v5=this.getField(“ld5”).value;
this.event.value=Math.max(v1,v2,v3,v4,v5);alex
ParticipantBonjour à tous,
bonjour Merlin,
Dans ton tuto sur “les différents niveaux d’utilisation des scripts JavaScript” on trouve au paragraphe 4 la liste des évènements susceptibles de lancer l’exécution d’un script. On pourrait peut-être ajouter un petit paragraphe concernant les événements suivants:- Ouverture de page.
- Fermeture de page.
[/list]Et en précisant la manière de faire pour:
- Ouverture du document.
[/list]Dans l’exemple qui nous intéresse dans ce fil, le script de document Initialisation() est activé en ouverture de page.
alex
ParticipantBonjour à tous,
Oui, on peut très bien lancer le script d’initialisation à l’ouverture de page.
On peut aussi le lancer à l’ouverture du document en utilisant la procédure suivante:function Initialisation()
{
//suite des opérations à effectuer…
}
Initialisation()C’est ce que j’ai illustré dans l’exemple joint.
alex
ParticipantEn première instance je répondrai comme Merlin.
Il est cependant possible de nommer automatiquement, puis d’enregistrer un document .pdf (en général c’est intéressant pour les formulaires) dans un répertoire choisi en fonction de critères logiques mais il faudra pour ça recourir à un JavaScript d’application (sous Acrobat PRO ou, cerise sur le gâteau sous Acrobat Reader) qui fera passer en contexte privilégié.
A titre d’exemple, un formulaire unique MERE disponible sur un serveur permettra la saisie puis l’enregistrement de factures dans un répertoire Facture, des bon de livraison dans le répertoire livraison, etc…
Nous avons déjà illustré ici ce genre de démarche avec une machine à tickets.
Je ne peux pas vous aider plus dans le cadre du forum. Désolé.alex
ParticipantBonjour,
Voilà un formulaire provisoire. Un seul script de document à étudier (lancé par le calcul du total). Je pense qu’on ne doit pas pouvoir cocher simultanément les deux cases.
Attention au formats numériques des cellules de saisie.
Pour les calculs il faut vérifier.
Bon week-endalex
ParticipantBonjour,
Les champs de saisie sont au format numérique. Une saisie 0 est interprétée comme une saisie vide et la comparaison n’est pas effectuée dans ce cas d’où le problème.
Dans la boucle du script de contrôle remplacer la ligne suivante:
if(sp.value!=””&sp.value!=9&r.value!=””&r.value!=9)
Par:
if((sp.value!=””|sp.value==0)&sp.value!=9&(r.value!=””|r.value==0)&r.value!=9)alex
ParticipantOui, c’est usant de paramétrer les formats des champs numériques un à un (et on ne peut pas le faire par script). Alors, quand ce n’est pas nécessaire on s’en passe… au moins dans les tests.
alex
ParticipantDésolé, mais une petite analyse s’impose avant de scripter le calcul du résultat:
Case 1 et case 2 cochées simultanément: on fait quoi ?
Case 1 cochée et case 2 non cochée: on fait quoi ?
Case 1 non cochée et case 2 cochée: valeur à 0
Case 1 non cochée et case 2 non cochée: valeur à 0
Ensuite, quel est l’état initial de notre affaire (valeurs par défaut à 0 ou vide comme proposé par Merlin, cases non cochées ?).alex
ParticipantBonjour,
Si on ne précise pas le format des données saisies, le traitement procède à une concaténation de chaînes.
On peut s’affranchir de cette “formalité” en forçant le traitement à calculer une somme, pour cela on ajoute 1* (multiplication par 1 qui lève l’ambiguité puisqu’il y a un opérateur).//Je veux faire la somme de 4 champs. j’ai mis ce script :
console.clear();
var PH11 = this.getField(“PH1-1”).value;
var PH12 = this.getField(“PH1-2”).value;
var PH13 = this.getField(“PH1-3”).value;
var PH14 = this.getField(“PH1-4”).value;
var U1 = this.getField(“U1”).value;
if(U1 != “” && U1 != “0”)
{
total=1*PH11+1*PH12+1*PH13+1*PH14;
console.println(“Resultat=”+total);
this.event.value = total + ” u20AC”;
}
else
{
this.event.value = “”;
}
Voir maquette.7 mai 2015 à 15:50 en réponse à : Afficher ou masquer un bouton "activé" selon la valeur d’un champ texte #57757alex
ParticipantBonjour, voici le script de la case à cocher:
console.clear();
console.println(“Action sur “+this.event.target.name);
if(this.event.target.isBoxChecked(0))
{
this.getField(“Bouton”).display=display.visible;
}
else
{
this.getField(“Bouton”).display=display.hidden;
}
Et par la même occasion celui du champ de saisie pour l’exemple précédant après correction d’une de mes bêtises:console.println(“Action sur “+this.event.target.name);
if(this.event.value>0)
{
this.getField(“Bouton”).display=display.visible;
}
else
{
this.getField(“Bouton”).display=display.hidden;
}
Maquette jointe illustrant simultanément les deux usages.7 mai 2015 à 09:19 en réponse à : Comment faire apparaitre des calques par sélection dans une liste déroulante ? #58835alex
ParticipantBonjour,
Voici un script qui va lister les calques du document et les désactiver:
function desactivationCalques()
{
console.clear();
calqueArray=this.getOCGs();
index=0;
while(index{
name=calqueArray[index].name;
console.println(“Calque de rang “+index+”-“+name);
calqueArray[index].state=false;
index=index+1;
}
}
Ensuite, il faut créer une table précisant les calques à activer pour chacun des items de la liste déroulante.
Puis un script qui, en fonction de la sélection va activer ces calques… Ce n’est pas trop difficile.
…alex
ParticipantBonjour,
En conservant votre manière de faire voici le script de calcul du champ “Texte10”:
if(this.getField(“Case2”).isBoxChecked(0))
{
event.target.value = 0;
}
else
{
event.target.value = this.getField(“Texte13”).value*0.66
}alex
ParticipantBonjour,
Dans votre script qui me parait bon, il ne faut pas recourir à une variable globale (global.f), remplacez la par f.
Il n’est sans doute pas utile de cocher la case de validation immédiate.
Ci-joint ma version avec trace dans la console.alex
ParticipantLes commandes d’affichage/masquage de champs sont assez pratiques pour de petits formulaires mais rapidement illisibles et sources de conflits lorsque le nombre de commandes croît.
Je vous conseille le JavaScript. A titre d’exemple j’ai écrit un script unique associé aux occurrences du bouton radio “Group1” auxquelles j’ai associé la fonction affichage() suivante:
function affichage()
{
//masquer les champs associés
console.clear();
this.getField(“RER”).display=display.hidden;
this.getField(“REAA”).display=display.hidden;
this.getField(“RF”).display=display.hidden;
this.getField(“RE”).display=display.hidden;
this.getField(“RSE”).display=display.hidden;
this.getField(“RY”).display=display.hidden;
//noter la valeur d’export du bouton radio Group1
ckaction=this.event.target.name;
valeur=this.event.target.value;
console.println(“Selection de “+ckaction+” avec pour valeur :”+valeur);
//Afficher le champ.
this.getField(valeur).display=display.visible;
}
Voir maquette.alex
ParticipantBonjour,
Oops, j’ai été trop vite !
Voici le script corrigé. Il vérifie que les champs obligatoires de type txt et combobox sont bien saisis. Reste à ajouter les cases à cocher obligatoires. Je reviendrai sur ce sujet à l’occasion.
A vérifier. Ctrl-J pour afficher la console et voir la trace du déroulement du script.alex
ParticipantBonjour à tous,
Voilà un script plus généraliste que le précédant et qui devrait convenir à votre formulaire. En effet, celui-ci embarque des listes déroulantes avec saisies obligatoires et une valeur par défaut vide.
Ce script prend donc en compte les champs texte et combobox obligatoires.A propos de mon premier script:
Celui-ci comporte une erreur lorsque l’on tente d’obtenir la propriété .required qui est inconsistante pour les boutons. Il faut donc exclure les boutons de l’analyse.14 avril 2015 à 07:58 en réponse à : Bouton envoi formulaire PDF par mail avec objet et nom de fichier personnalisés #58753alex
ParticipantJ’ai été trop vite…
13 avril 2015 à 20:33 en réponse à : Bouton envoi formulaire PDF par mail avec objet et nom de fichier personnalisés #58751alex
ParticipantBonsoir,
Voir script du bouton sur le fichier joint. A vérifier (Ctrl-J) pour ouvrir la console sousAcrobat PRO et voir les résultats intermédiaires.
Attention au format du champ date à respecter mais on peut saisir : “3/1/2013” par exemple.alex
ParticipantMerci Merlin et désolé, jeanine63000, je suis avare en explications.
alex
ParticipantBonsoir,
Qu’est-ce qui ne fonctionne pas chez vous ?
1-Ma maquette ? Dans ce cas il faut s’assurer que le JavaScript du viewer (Acrobat PRO ou Standard ou Adobe Reader sur PC, Mac, Linux ou UNIX) est activé.
2-Votre formulaire. Dans ce cas il faut nous le faire parvenir pour qu’on y jette un oeil.Par ailleurs, je ne fais plus de tests JavaScript sur les tablettes. J’attends la prochaine version d’Adobe Reader qui interprètera correctement toutes les méthodes du JavaScript et fonctionnera sur tous les supports…. Je suis très optimiste.
alex
ParticipantBonjour à tous,
Voici ma manière de répondre à cette problématique qui diffère un peu de ce que propose Merlin:
Pour une fois j’utilise la détection d’entrée du curseur dans le champ de signature (Action>Souris entrée)
Je passe en revue tous les champs de saisie obligatoire du formulaire pour rechercher une éventuelle saisie manquante.Celle-ci trouvée, j’y place le curseur ce qui interdit la signature.
Voir ma petite maquette jointe.NB:ce script peut être repris tel quel pour tout autre formulaire.
11 avril 2015 à 14:54 en réponse à : Lier la saisie d’un menu déroulant avec la saisie d’un champ texte #58738alex
ParticipantDisons que j’ai un peu dépassé la limite d’age….
Je reviendrai plus tard sur ce formulaire, avec une autre méthode…10 avril 2015 à 11:18 en réponse à : Lier la saisie d’un menu déroulant avec la saisie d’un champ texte #58736alex
ParticipantBonjour,
Voilà un premier jet qui démontre la faisabilité du projet (enregistrement de données sous Adobe Reader):
Pour ajouter un nouvel enregistrement, sélectionner l’item vide (le dernier de la liste) puis presser “?” ce qui rend les champs saisissables. Saisir les données et valider.
Les enregistrements enregistrés sont modifiables.Quelques restrictions:
-On ne peut ajouter qu’un seul enregistrement à la fois (il faut réouvrir le formulaire).-Pas de suppression d’enregistrement (sauf à les effacer tous).
-Pas de tri des items.
-Nombre d’enregistrements limités.alex
ParticipantOn approche du but.
C’est le calcul de la variable sommeRP qui était concerné par cette erreur car il passait par la mise à jour des champs RP. Une erreur de débutant….
J’ai indiqué en commentaire dans le script de controle les modifications que j’ai apporté.
Reste à faire quelques tests pour les cas particuliers (saisies inconsistantes en particulier).
On voit dans cet exemple qu’il faut préférer le script unique à une cascade de calculs associés à des champs, enchaînement toujours délicat à gérer.alex
ParticipantBonjour,
C’est justement pour éviter les retards que les calculs sont regroupés dans un script unique, malgré cela il y a quelques précautions à prendre.
J’ajoute les derniers calculs (SRS et SDS) et je reviens vers vous avec un petit commentaire.6 avril 2015 à 17:41 en réponse à : Lier la saisie d’un menu déroulant avec la saisie d’un champ texte #58734alex
ParticipantEffectivement, les listes mères-filles de nos exemples sont prédéfinies (un script décrit les tables des items des menus déroulants).
Deux problèmes pour votre projet:
1-La mémorisation des données:
Pour résoudre ce problème, et si on s’impose de travailler avec Adobe Reader, ces données seront obligatoirement stockées dans des champs de texte invisibles et restituées à chaque usage. Par ailleurs, et le formulaire aura ses “Reader Extensions” activées pour s’assurer de la mémorisation des données saisies.
2-La saisie du nouveau nom:
Ce n’est pas possible de l’ajouter directement sur le menu déroulant, on devrait le faire sur la partie affichage.On peut voir…
alex
ParticipantVoici une maquette qui fonctionne avec deux scripts:
1-chaque saisie validée active le script unique baptisé controleSaisie() qui vérifie la validité de la saisie des 34 champs de votre formulaire et note le rang du couple SP/rawSP impacté par la saisie.
2-Un script de contrôle unique baptisé controle() lié au calcul du champ “SSS” vérifie la cohérence des saisies “SP” et “rawRP”, détermine “RP” et calcule et renseigne les champs de résultats “SSS”,”SRSraw” et “SDSraw” et les LVS. Pour les champs “SRS” et “SDS” et les “TID” je n’ai pas les formules de calcul.
Le bouton “Normal” côté STRESS PERFUSION réinitialise la partie du formulaire gauche correspondante. Script initialisationSP().
Le bouton “Normal” côté REST PERFUSION réinitialise la partie du formulaire droite correspondante et les “RP”. Script initialisationrawRP().Il reste à replacer les champs de saisies dans l’ordre souhaité par l’utilisateur pour usage des TAB et les formules de calcul manquantes à ajouter dans le script de contrôle.
Notez bien que je n’utilise qu’une seule action de type calcul (sur le champ “SSS”).
alex
ParticipantPour info, si ça intéresse du monde, voici comment j’ai contourné le problème : j’ai lancé plusieurs commandes “print” en les faisant débuter à l’endroit où j’avais besoin.
Bonjour,
Je pense qu’on peut faire la même chose par script en lançant des tâches d’impression consécutives genre:
console.clear();
// Passer le statut à true pour faire apparaître le menu lors des tests.
statutPopUp=false;
console.println(“Impression partie pages 1 à 3.”);
//On se positionne page 1 et on lance une tâche d’impression.
this.pageNum=0;
this.print({
bUI:statutPopUp,
nStart:0,
nEnd:2,
bSilent:false,
bReverse:true,
bShrinkToFit:true
});6.”);
//On se positionne page 3 et on lance une seconde tâche d’impression.
this.pageNum=3;
this.print({
bUI:statutPopUp,
nStart:3,
nEnd:5,
bSilent:false,
bReverse:true,
bShrinkToFit:true
});Puis mettre ce script en boucle pour imprimer plus d’un exemplaire….
alex
ParticipantBonjour,
Deux colonnes fonctionnent.
Compléter les autres cases à cocher pour les autre colonnes (deux lignes de script de validation à chaque fois) en s’inspirant des deux premières….alex
ParticipantAttention, je n’ai pas saisi le script de validation de tous les champs “SP” et “rawRP”, à compléter donc avec :
controleSaisie();alex
ParticipantDans votre script, n n’est pas défini.
Sans votre maquette, je ne peux rien faire car je ne vois pas les déclencheurs.
Aussi, je vous propose la mienne qui fonctionne avec deux scripts:
1-chaque saisie validée active le script unique baptisé controleSaisie() qui vérifie la validité de la saisie des 34 champs de votre formulaire.
2-Un script de contrôle baptisé controle() lié au calcul du champ “SSS” vérifie la cohérence des saisies “SP” et “rawRP”, calcule et renseigne les champs de résultats “RP”,”SRS” et “SDS”. Il faudra ajouter les calculs des champs manquants au sein de ce même script.
Le bouton “Reset” est à vocation pédagogique. Il réinitialise le formulaire pour faire des tests.
Pour la compréhension, les champs non saisis ont une bordure rouge par défaut, à corriger si besoin.
Pour la compréhension, les champsRP valides apparaissent au fur et à mesure des saisies, à corriger si besoin.
Il reste sans doute un peu de travail, mais l’essentiel est là. Inspirez vous du script initialisation() pour vos boutons radio “SPNormal” et “RPNormal”.alex
ParticipantJ’ai fait le test. Il n’est pas possible de modifier des pièces jointes sous Adobe Reader (la méthode setDataObjectContents n’est même pas fonctionnelle en contexte privilégié)
En conclusion: possibilité d’ajout d’items de menus déroulants uniquement sous Acrobat !
Désolé.alex
ParticipantBonjour,
Oui, je suis comme les robots de Google, je passe ici de manière aléatoire…
La maquette illustrant une manière de créer des menus déroulants en cascade ici sur trois niveaux n’est pas prévue pour être modifiée par l’utilisateur. Les données sont chargées à l’ouverture du document par le script d’initialisation.
Je suis désolé pour vous mais il faudrait pas mal travailler pour ajouter cette fonctionnalité car il faudrait recourir à un fichier .csv ou .xls associé en pièce jointe au document, utiliser les méthodes getDataObjectContents et setDataObjectContents et bien manipuler les chaînes ce caractères et les encodages. Enfin, il faut s’assurer que ça fonctionne bien sous Adobe Reader pour la partie écriture (setDataObjectContents) en faisant un test avant de s’embarquer pour l’aventure….alex
ParticipantBonjour,
Ajoutez à votre code la ligne suivante si vous souhaitez que la liste déroulante se positionne sur le premier item à l’ouverture de votre formulaire:
ff.currentValueIndices =[0];
Où 0 précise le rang de l’item choisi dans la liste.alex
ParticipantQuelques pistes pour commencer…
Ci-dessous exemple pour le premier script des champs rawSp:
function controlerawSP()
{
console.clear();
saisie=this.event.value;
champsaisierw=this.event.target;
nomchamprw=this.event.target.name;
nomchampRP=”RP”+nomchamprw.substring(5,nomchamprw.length)
console.println(“Saisie de la valeur “+saisie+” sur “+nomchamprw+” associe a “+nomchampRP);
//Validite de la saisie
if(saisie!=””)
{
if((saisie>=0&saisie<=4)||saisie==9)
{
//Valid
this.getField(nomchampRP).required = false;
}
else
{
app.alert(“ERROR: Please input a value between 0 and 4, or 9 if Unevaluable”,1);
event.rc = false;
}
}
else
{
champsaisierw.required = true;
this.getField(nomchampRP).required = true;
}
}Ci-dessous correction du script pour le calcul de SSS:
console.println(“Calcul SSS”)
var total = 0;
for (var i=1; i<=17; i++)
{
var v =this.getField(“SP”+i).value;
if (v!=9) {total+v; }
}
event.value = total;if(event.value <=0) event.value = "";
alex
ParticipantBonjour,
Il faut savoir que tous les scripts de calcul (en particulier des champs rawRP et RP) sont exécutés quelque soit la saisie effectuée.
Je vous conseille de revoir globalement ce document et suivre le conseil de Merlin avec:
une unique fonction liée à la validation de chaque saisie SP baptisée controleSP() pour s’assurer de sa validité (chiffre de 0 à 4 ou 9) .
une unique fonction liée à la validation de chaque saisie rawSP baptisée fonctionrawSP()pour s’assurer de sa validité (chiffre de 0 à 4 ou 9) .
une unique fonction dédiée au contrôle liée à la validation des saisies rawRP controle() assurant la comparaison de la valeur rawRP à la valeur SP correspondante.
une unique fonction de calcul pour chacun des champ RPPar ailleurs les calculs des champ SRS et SRSraw me semblent erronés mais je peux me tromper.
alex
ParticipantIl n’y a pas de frais sur la seule partie verte de la première page (stotal1), voici le formulaire à vérifier.
Le script est embarqué par le seul champ “frais”. Ce script gère l’affichage des frais forfaitaires et le calcul du total general.
A vérifier donc.[Fichier joint supprimé par l’administrateur le 24-06-2015]
Je viens de recevoir une requête de la RATP me demandant de supprimer le fichier joint.
C’était un bon de commande obsolète qui apparaissait en bonne place dans les résultats de Google, et que donc des internautes utilisaient…alex
ParticipantSi le but de cet envoi est de récupérer des données saisies dans les deux premières pages du formulaire pourquoi ne pas envoyer ces données sous forme de fichier fdf ?
Dans ce cas on aura recours à un bouton dont l’action sera: “Envoyer un formulaire” en prenant soin de libeller l’adresse d’envoi comme suit :
mailto:adresse email
et de choisir les champs dont le contenu doit être envoyé.
Voir copie d’écran.Lors de l’utilisation, sous Adobe Acrobat mais aussi sous Adobe Reader, on a le choix du type de messagerie (local ou distant), le mail est généré automatiquement, reste à l’envoyer.
alex
ParticipantBonjour,
Voici une maquette avec les éléments d’entrée (saisies des valeurs a, b, c) et le résultat du calcul.
Le script de document réalise les tests et le calcul lors de toute saisie des valeurs a, b ou c.
Je corrigerai dès que j’aurai compris la demande.
script:a=this.getField(“ChampA”).value;
b=this.getField(“ChampB”).value;
c=this.getField(“ChampC”).value;
if(a==0|c==0)
{
this.event.value=a+b+c;
}
else
{
this.event.value=a+b+c+30;
}
Dans l’attente….
A+alex
ParticipantBonjour,
Oui, il faut procéder comme indiqué par Merlin puis vérifier et corriger les paramètres d’initialisation si nécessaire:
//donnees de base numérotation automatique
//Nom du champ contenant le numero de formulaire
fNum=”Num_Bordereau”;
//Nom du bouton de numérotation.
fNumAction=”Num”;
//Nom du bouton de validation du formulaire.
fNumValid=”Validation”;
//
enTete=”RSA”;Scripts requis:
1-Ouverture document:
initialisation()
2-Bouton de validation:
enregistrement()
3-Enregisrement du document:
Le dernier numéro est mémorisé par une variable locale lors de l’enregistrement du formulaire:
global.dernNum=this.getField(fNum).value;global.setPersistent(“dernNum”,true);alex
ParticipantJ’ai bien dit:
Attention, cette solution fonctionne pour le format “JJ/MM/AAAA”.
J’aurais du écrire:
Attention, cette solution ne fonctionne que pour le format “JJ/MM/AAAA”.
Mais on pourrait aussi effacer les saisies de format inappropriées.alex
ParticipantBonsoir,
Voir la maquette jointe pour une solution basique certes, mais qui pourra facilement s’adapter à des sélections de dates par menus déroulants (Jour,mois;année).
Attention, cette solution fonctionne pour le format “JJ/MM/AAAA”.26 janvier 2015 à 15:45 en réponse à : Remplissage de champs de texte via une liste déroulante #58166alex
ParticipantDésolé, je n’ai pas trop de temps mais voici une maquette assez moche pour illustrer une manière de faire.
Si j’ai bien compris, il ne s’agit pas de menus déroulants en cascade même si certaines parties de scripts peuvent nous inspirer ici.Le script init() de document prépare une table de données et remplit le menu déroulant “Selecteur”.
A la sélection d’un item du menu déroulant on va rechercher les données dans la table pour renseigner les champs du formulaire.Cette action est réalisée par le script de format > script de touches personnalisé.Bonne soirée
alex
ParticipantVoici une maquette illustrant la proposition de Merlin.
A l’enregistrement, une alerte apparaît listant les saisies obligatoires manquantes.
Attention, la couleur de bordure des champs de saisie obligatoire est gérée par le script.
Bonne soirée.
Alex10 décembre 2014 à 12:30 en réponse à : Enregistrement avec Adobe Reader pour rendre des éléments non éditables #58073alex
ParticipantCi-joint une ébauche de solution…
L’administrateur peut réinitialiser la page de formulaire courante en activant un bouton transparent situé au dessus de la colonne des prix, le code est ici “1234”. Les champs de saisie des prix redeviennent alors tous saisissables (readonly=false) avec un encadrement transparent (facultatif, c’est pour la démo).
L’utilisateur peut modifier les prix. Lors de la validation une alerte lui demande s’il souhaite l’inscrire en dur. Si la réponse est positive, le champ passe en non saisissable (readonly=true) et est encadré de vert (facultatif, c’est pour la démo).
Pour le bon fonctionnement sous Adobe Reader il faut activer les Reader Extensions avant mise à disposition du formulaire.
Fichier>Enregistrer sous un autre…>Fichier PDF Reader Extended>Activer d’autres outils (notamment ….)Nota 1: le nom des champs de prix sont de la forme “BBp.x” où p est le numéro,de la page du catalogue et
x l’indice du prix. Le rang x=0 est réservé au titres des colonnes de prix. On peut donc ajouter autant de pages que nécessaire.Nota 2:On peut évidemment ajouter un bouton de reset global (boucle sur l’ensemble des pages de tarif).
alex
ParticipantSalut Merlin,
Je connais bien cette manière de faire qui conduit certes à un script de calcul très court mais qui restreint la liberté de choisir les noms des données, en particulier lorsqu’on doit les envoyer vers un serveur ou les récupérer en XML.
Dans mon exemple, j’ai bien sûr une série de termes de la forme “Montant.x” mais aussi des champs aux noms légèrement différents (“MontantEmballage” ou “MontantTransport” par exemple) plus explicites.
A chacun sa manière…
Bonne soirée à tous.10 novembre 2014 à 09:10 en réponse à : Javascript réinitialiser champs spécifiques avec un bouton #57930alex
ParticipantPour plusieurs champs, bouton 1:
this.resetForm([“Champ1″,”Champ2″,”Champ3”]);
Bouton 2:
this.resetForm([“Champ5″,”Champ6”]);
Ne pas oublier les crochets, la liste est un tableau.alex
ParticipantBonjour,
Ci-joint une maquette pour illustrer la manière:
Le champ “TotalMontants” embarque le script qui vous intéresse. Ce script fait la somme de tous les champs dont le nom commence par Montant.
On peut créer autant de champs de calcul que l’on veut, il suffit de préciser l’en-tête du nom des champs à additionner (teteNom=”xxxx”
Voici ce script avec quelques éditions pour la console (Ctrl J pour l’afficher).console.clear();
teteNom=”Montant”;
indexField=0;
indexTerme=0;
total=0;
while(indexField{
//Recupere le nom du champ.
nameField=this.getNthFieldName(indexField);
if(nameField.substring(0,teteNom.length)==teteNom)
{
indexTerme=indexTerme+1;
console.println(indexTerme+”-“+nameField+”-valeur=”+this.getField(nameField).value)
total=total+1*this.getField(nameField).value;
}
indexField=indexField+1;
}
console.println(“Total=”+total)
this.event.value=total;2 novembre 2014 à 09:46 en réponse à : Validation JavaScript et Contrôle sur Signature Manuscrite #57838alex
ParticipantBonjour à tous,
Tant que la dernière saisie d’une donnée n’est pas validée par “Enter” ou “Tab”, la valeur ne peut être prise en compte par le script du bouton “Test”.
Faites des essais avec la maquette jointe.alex
ParticipantMême chose avec le détail de l’analyse (ouvrir la console après validation Ctrl J ou Pomme-J)
alex
ParticipantBonsoir à tous,
Voici ma solution si vous ne souhaitez pas accepter les majuscules accentuées. Je passe par les codes ASCII des digits pour reconstituer le format. L’intérêt de cette manière de faire, c’est qu’on peut l’adapter à des formats très divers.
Les codes ASCII des chiffres vont de 48 à 57 et ceux des majuscules de 65 à 90
Le script testF() de document à exécuter après validation quelque soit le champ de saisie est donc le suivant:function testF()
{
index=0;
mot=this.event.value;
format=””;
console.println(“Analyse de la saisie du champ “+this.event.target.name)
while(index{
digit=mot.charCodeAt(index);
if(digit>47&digit<58){format=format+"9";}
if(digit>64&digit<91){format=format+"A";}
index=index+1;
}
console.println(“Format de la saisie:”+format);
if(format!=”AA99A”&&format!=”A99A”)
{
app.alert(this.event.target.name+”rSaisie incorrecterFormat attendu AA99A ou A99A.”,1);
this.event.value=””;
}
}14 octobre 2014 à 08:39 en réponse à : Ne pas afficher le petit "+" lorsque le champ est trop petit #57747alex
ParticipantEn ce qui concerne l’affichage de deux colonnes, je ne vois pas de solution, sauf à séparer le premier caractère du reste par un caractère genre tiret (Exemple: “M-Demande de…”). Dans ce cas le script est inchangé.
A moins que je n’aie pas compris la question…
A.14 octobre 2014 à 08:26 en réponse à : Ne pas afficher le petit "+" lorsque le champ est trop petit #57746alex
ParticipantJe vous conseille ça, c’est dédié au Web mais tout ce dont on a besoin en dehors de l’environnement pdf y est (fonction mathématiques, traitement des chaînes de caractères, tables, dates, etc…) :
JavaScript: The Definitive Guide, 6th Edition
Activate Your Web Pages
By David Flanagan
Publisher: O’Reilly MediaSinon on trouve tout sur le Web, il suffit de demander.
Site conseillé: developpez.comBonne journée à tous.
14 octobre 2014 à 07:48 en réponse à : Afficher ou masquer un bouton "activé" selon la valeur d’un champ texte #57753alex
ParticipantBonjour,
Voici le petit script qui gère la visualisation du champ “Bouton” (à placer dans via l’onglet “Validation” du champ “Saisie”)
Dans la maquette jointe les deux lignes supplémentaires du début permettent d’afficher le nom du champ à l’origine de l’action et la valeur saisie. Faire Ctrl J pour afficher la console.//Test sur la valeur saisie après validation (champ numérique)
if(this.event.value>0)
{
//Faire apparaître le bouton
this.getField(“Bouton”).display=display.visible;
}
else
{
//Faire disparaître le bouton
this.getField(“Bouton”).display=display.hidden;
//Déplacer le curseur sur ce bouton (pas obligatoire)
this.getField(“Bouton”).setFocus();
}12 octobre 2014 à 11:10 en réponse à : Ne pas afficher le petit "+" lorsque le champ est trop petit #57742alex
ParticipantBonjour à tous.
Pour répondre à la question du “+”, je vous propose de ne retenir pour l’affichage que le premier caractère de l’item du menu déroulant comme indiqué ci-dessous.
Par ailleurs, pour que la valeur s’affiche je vous propose de “forcer” le déplacement du curseur sur la saisie suivante de votre formulaire ce qui a pour effet de mettre à jour le champ “Text2”
Voir document de démonstration joint.
Script:
var menu31 =
app.popUpMenu(‘……….’);
this.event.target.value = menu31.substring(0,1);
this.getField(“Saisie suivante”).setFocus();13 septembre 2014 à 07:01 en réponse à : Copier un champ dans un autre champ si case à cocher est activée [résolu] #57569alex
ParticipantBonjour,
Deux remarques:
Dans les scripts, il faut faire attention à la casse des noms de champ (“Val1” n’est pas “val1”).
Les scripts de calcul sur évènement sont associés aux champs de résultat (ici les champs Val1, Val2, Val3, etc..)
Ci-joint le formulaire avec quelques exemples sur ce sujet.
Bon courage pour la suite.4 septembre 2014 à 15:24 en réponse à : Copier un champ dans un autre champ si case à cocher est activée [résolu] #57567alex
ParticipantBonjour,
J’ai vu ça :
if(this.getField(“LicenceFFCT”).value == “checked”){(this.getField(“Montant1”).value = “checked”);(this.getField(“val1”).value = “checked”);}Je n’ai pas tous les éléments mais la syntaxe correcte du script de calcul du champ “Montant1” pourrait être:
if(this.getField(“LicenceFFCT”).isBoxChecked(0))
{this.event.value = this.getField(“val1”).value}
Pour le second problème le script de calcul du champ “Montant2” pourrait être:
if(this.getField(“Champ1”).value==0){this.event.value=0;}Avec le formulaire d’origine on pourrait sans doute faire beaucoup mieux…
alex
ParticipantParfait, mais avec cette manière de nommer le fichier, on ne peut pas en créer plus d’un différent par minute. Ce n’est peut-être pas gênant, tout dépend de l’usage qu’on en fait.
Cette méthode de travail en contexte privilégié est à retenir pour étendre les possibilités d’Adobe Reader.alex
ParticipantVoici mon exemple:
1-modifier l’extension du fichier EnregistrementDocument.txt en .js et le placer dans le répertoire JavaScript de l’application.
2-Le document DocumentReference.pdf emarque un bouton qui appelle le script d’application après avoir construit le nom du fichier. Un champ visualise ce nom après enregistrement.Nota: on peut aussi ajouter un item de menu spécial à l’application (Acrobat ou Adobe Reader) pour lancer cette action.
alex
ParticipantBonjour à tous, bonjour Merlin,
On contourner ça à l’aide d’un script d’application (plug in) placé dans le répertoire JavaScript d’Acrobat PRO sous forme fe fonction exécutable en contexte privilégié, il suffit alors de lui passer des paramètres (le nom d’enregistrement du fichier donc, incluant la date au format souhaité) à partir du document à enregistrer. On peut aussi le faire avec Adobe Reader.
Je te rappelle Merlin que nous avons déjà utilisé cette méthode ensemble dans le cadre d’une de tes affaires!
J’ai un petit exemple à vous proposer. Ce sera pour demain, le temps que je vous fasse ça.alex
ParticipantVoici,
Les boutons radio “OPEN” lancent le script cocheJumping() qui fait le travail.[attachment deleted by admin]
25 mars 2014 à 15:51 en réponse à : Listes déroulants en cascade avec Acrobat pro XI (formulaires) #56947alex
ParticipantBonjour à tous,
Voici un exemple de base pour 2 niveaux.
Les données de liste sont définies par le script Initialisation() qui s’exécute à chaque ouverture du formulaire et crée deux tables.
La première liste (liste de mère) est renseignée par ce même script.
La liste secondaire est renseignée chaque fois que l’on sollicite la liste mère par le script RemplissageFille(). Champ “ListeNiveau1″>Propriétés>Format>Script de touches personnalisé…[attachment deleted by admin]
12 mars 2014 à 11:35 en réponse à : Envoi automatique d’un email à chaque enregistrement du PDF #56874alex
ParticipantCi-joint deux exemples basiques, l’un avec bouton d’envoi, l’autre avec envoi lors de l’enregistrement.
[attachment deleted by admin]
12 mars 2014 à 10:25 en réponse à : Envoi automatique d’un email à chaque enregistrement du PDF #56872alex
ParticipantIl faut créer ce bouton ou associer ce script à l’enregistrement du document (Outils>Javascript>Définir les actions du document>Le document sera enregistré), je vous donne un exemple dans la journée.
12 mars 2014 à 10:19 en réponse à : Bouton d’impression : séquences de pages, et aperçu de la boite de dialogue #56822alex
ParticipantBonjour,
Comme je l’ai dit plus haut, la sélection de l’imprimante ne fonctionne que sur Windows (c’est mentionné dans la doc, voir propriété printerName). Je suppose que tu es sur Mac ou Linux…
Quant au découpage, il est imposé par l’outil print qui est mis à notre disposition !
On peut envisager de générer automatiquement un fichier .pdf à imprimer, contenant uniquement les feuilles à imprimer mais nous devrons le faire sous Acrobat PRO ou Standard, pas avec Adobe Reader.12 mars 2014 à 09:59 en réponse à : Envoi automatique d’un email à chaque enregistrement du PDF #56870alex
ParticipantLe bouton de validation du formulaire peut lancer le script suivant à adapter à votre cas:
Msg = “Corps de votre courriern”;
Objet=”Objet du courrier”;
CTO=”destinataire@abracadabra.net”;
CCC=”destinataire2@abracadabra.net”;
//méthode d’envoi
app.mailMsg({
bUI: true,
cTo: CTO,
cCC:CCC,
cSubject: Objet,
cMsg: Msg
} );12 mars 2014 à 09:42 en réponse à : Récupération données BDD dans un formulaire PDF (La suite) #56794alex
ParticipantOui, c’est normal ! Les menus déroulants sont remis à jour à chaque ouverture puisque le script est conçu comme ça. Seules les données des champs associés (en jaune sur la maquette) sont invariantes et on notera que le premier de ces champs associé contient la valeur de l’item sélectionné dans le menu déroulant.
Pour conserver la sélection du menu déroulant après enregistrement du formulaire, il faut revoir la maquette de la manière suivante:
Lors de l’ouverture le script d’ouverture relit les tables sans toucher aux menus déroulants (voir script ouverture())
Lors de la modification d’une pièce jointe, on doit mettre à jour les menus déroulants (ici grâce au bouton Mise à jour” qui lance le script initialisation(). On peut ensuite masquer ce bouton. Ci-joint maquette pour illustration.[attachment deleted by admin]
11 mars 2014 à 15:59 en réponse à : Bouton d’impression : séquences de pages, et aperçu de la boite de dialogue #56819alex
ParticipantCi-joint une maquette à ma façon pour illustrer une réponse à l’option 1 avec présélection de l’impression sur Pc uniquement.
Sur Pc:
Le sélecteur capte la liste des imprimantes disponibles à l’ouverture et on peut en sélectionner une avant d’imprimer en aveugle ou non.
Sur Mac:
La liste se remplit aussi mais on ne peut sélectionner l’imprimante que via le menu d’impression. On ne peut donc pas imprimer en aveugle.Je n’ai as cherché de solution via une impression .pdf une voie à explorer sur Mac donc.
[attachment deleted by admin]
10 mars 2014 à 11:22 en réponse à : Récupération données BDD dans un formulaire PDF (La suite) #56792alex
ParticipantBonjour à tous,
Le formulaire est trop lourd, j’ai donc transféré les champs, les scripts et les pièces jointes sur ma maquette.
Merci à Merlin d’avoir ajouté des commentaires dans mes scripts.
Le but de ces outils est de renseigner des menus déroulants à partir de données embarquées dans des fichiers .csv que l’on trouve en pièces jointes. Dans notre exemple, les menus déroulants sont renseignés dès l’ouverture du document une fois pour toute, mais dans d’autres configurations, ils pourront être renseignés en fonction du contexte de saisie. Attention, toutefois, le temps de chargement n’est pas négligeable.
La sélection d’un item de ces menus déroulants provoque l’affichage des données correspondantes issues des tables, ici pour l’exemple en fond jaune.
Attention au format des données.Bon courage.
[attachment deleted by admin]
6 mars 2014 à 10:04 en réponse à : Récupération données BDD dans un formulaire PDF (La suite) #56788alex
ParticipantBonjour à tous,
Le script xinitialisation()) qui renseigne les menus déroulants du formulaire une fois pour toutes, doit se faire à l’ouverture du document.
Il ne faut pas le relancer à chaque utilisation des menus déroulants pour lesquels seul le script de format personnalisé doit être conservé.10 janvier 2014 à 17:34 en réponse à : Attribution de script sur bouton via les terminaisons de nom. – RÉSOLU #55981alex
ParticipantOui, il me suffit d’avoir les 10 premières pages pour localiser le problème.
10 janvier 2014 à 11:46 en réponse à : Attribution de script sur bouton via les terminaisons de nom. – RÉSOLU #55979alex
ParticipantBonjour,
Si les boutons des pages suivant la page 1 sont des copies des boutons de la page 1, ce script ne fonctionnera pas. Il faut que les noms de champs soient différents, exemple: A.R1, B.R1, C.R1 etc…alex
ParticipantVoilà, vous pouvez ajouter autant de lignes que nécessaire.
Attention, la manière de procéder a changé !
Deux scripts sont à l’oeuvre, tous deux déclenchés par l’action des menus déroulants (placement du résultat de la ligne dans la bonne colonne puis sommes des deux colonnes).
On pourrait avoir d’autres colonnes en gardant les scripts de base légèrement modifiés.[attachment deleted by admin]
alex
ParticipantJ’ai mis plus de temps à chercher ce qui devait être fait qu’à faire.
Ici, nous avons certes des magiciens chevronnés, mais aussi un groupe restreint de voyantes extra-lucides dont je fais partie !alex
ParticipantVoir si cette maquette se rapprocherait de ce qui est souhaité …
Ici, un seul script est à l’oeuvre (travail()). L’action sur l’un des menus déroulants le lance.
J’ai renommé les champs de manière à pouvoir ajouter des lignes si nécessaire (jusqu’à 10).[attachment deleted by admin]
alex
ParticipantQuelques remarques:
1-L’action déclenchant les scripts associés aux menus déroulants doit se faire via l’onglet Format, puis Script de touche personnalisé.
2-On doit récupérer les valeurs de ces champs par les évent.value ou évent.valueEx.
3-Les scripts font référence à des champs qui n’existent pas.J’ai une vague idée du but à atteindre, apparemment n’y a pas de calculs à faire, juste faire apparaître les champs d’un tableau suivant les choix effectués via les menus déroulants. Quelques précisions seraient les bienvenues…
“Ce qui se conçoit bien s’énonce clairement, et les mots pour le dire arrivent aisément.(Nicolas Boileau)”
alex
Participant1-“Au démarrage, les listes sont vides mais ne fonctionnent toujours pas”
Voilà qui me paraît tout à fait normal puisqu’on ne lance plus le programme à l’ouverture du document (voir demande ci-dessus)!2-“si j’actualise, les listes fonctionnent mais gardes toujours une valeur par défaut”
Là aussi, c’est le comportement normal des listes et menus déroulants , mais, mais, supposons….
faisons l’hypothèse que tu souhaites avoir un item de liste vierge, dans ce cas le formulaire joint ajoute un item de liste en blanc qui deviendra l’item par défaut. La sélection de cet item par l’utilisateur réinitialisera les champs associés.[attachment deleted by admin]
alex
ParticipantEn fait, on peut ! Mais disons que ça dépasse un peu le cadre de ce forum consacré au PDF:
1-Créer un bouton d’envoi de données (celui proposé par Acrobat ou un script submitForm() ) vers un service Web (un programme pHp associé à une base de données mySQL par exemple)
2-A partir de ces données, on utilisera une classe pHp capable de générer un fichier Excel formaté selon son besoin par extraction via requêtes SQL. On peut aussi gérer ces données directement sur une interface Web.
Pour faire ça, il faut connaître le JavaScript Acrobat, le pHp, le SQL et avoir quelques notions sur la sécurité.
Cela dit,on peut aussi s’intéresser à LiveCycle ES2alex
ParticipantCi-joint le formulaire dans lequel j’ai supprimé la ligne xinitialisation() comme je le demandais.
De ce fait, le remplissage des menus déroulants ne se fait que sur demande comme prévu.[attachment deleted by admin]
alex
ParticipantEnvoies ton formulaire…
3 décembre 2013 à 10:26 en réponse à : Faire alterner 2 boutons + probleme d’une police qui ne se charge pas #56319alex
ParticipantBonjour,
Voici pour répondre à la seule première question. Les deux boutons activent le même script unique de document facile à comprendre et à modifier. J’ai créé les champs de texte gérés par le script d’origine et qui manquaient avec des textes en français et en anglais.
A adapter à votre cas.[attachment deleted by admin]
alex
ParticipantSous Acrobat Pro
Outils>
Scripts JavaScript>Scripts JavaScript du document>
Sélectionner xInitialisation>Modifier
A la fin de la fonction :
function xinitialisation()
{
….
}
xinitialisation();Supprimer cette dernière ligne !
alex
ParticipantBonjour et bienvenue,
Voici un premier pas: créer un numéro de fiche à l’aide d’un bouton.
Attention au format des données du champ “date”, ici, c’est le script qui le définit via la méthode util.prind(). Ce script est un script de document baptisé xInit() qui est lancé par l’action sur le bouton.[attachment deleted by admin]
alex
ParticipantTu as laissé la ligne
xinitialisation();
qui exécute le script à l’ouverture.alex
ParticipantPlacer
this.resetForm();
à l’ouverture du document, rien de plus.
Mais il ne sera pas possible d’enregistrer le formulaire complété pour le consulter ultérieurement.Pour garder les deux possibilités (conserver les données précédemment saisies ou non), créer un script de document comme suit:
function init()
{
//Ce script sera exécuté à l’ouverture du document.
rp=app.alert(“Effacer les saisies antu00E9rieures?”,2,2)
if(rp==4)
{
//si oui, les saisies et contenus des menus déroulants sont effaces.
this.resetForm();
}
}
init();alex
ParticipantPour n’utiliser que les boutons il faut supprimer la ligne:
xintialisation();
Ainsi, le préremplissage des menus déroulants ne se fera qu’à la demande et on pourra enregistrer le formulaire avec ses données sous Adobe Reader.alex
ParticipantEn ajoutant la ligne suivante au tout début du script xinitialisation(), le formulaire sera vierge:
this.resetForm();alex
ParticipantEt oui, il n’y a pas d’erreur !
Ces deux boutons sont là pour les tests:
“Reset” initialise le formulaire et en effet, les menus déroulants ne “fonctionnent plus” puisqu’ils sont vides.
“Test” recharge ces menus déroulants !
Tu peux donc les supprimer, le chargement se fait à l’ouverture du document. -
AuteurRéponses