Donnez vie à vos documents numériques !
 

Répondre à : Générateur liste déroulantes

abracadabraPDF Forums PDF – Général Générateur liste déroulantes Répondre à : Générateur liste déroulantes

#74586
bebarth
Maître des clés

bonjour,
Voici ma proposition que je partage maintenant, avant d’être de mauvaise humeur… (ce que je n’espère pas, évidemment !).
Tu me dis si je n’ai pas tout compris.
C’est la première fois que je fais une boite de dialogue à éléments variables. Ce n’est pas ce qu’il y a de plus simple, mais lorsqu’on a compris comment fonctionnent les boites de dialogue, ça se fait… et voici le script pour ton fichier :
nbChamps=this.numFields;
if (nbChamps) {
var leChamp="- Liste des champs -";
var listeChamps="var listeChamps \= \{\""+leChamp+"\": "+(nbChamps+1)+",";
for (var i=0; i < nbChamps; i++) {
var nomChamp=this.getNthFieldName(i);
var RegExTest=new RegExp("^(\\w\\.\\d+)\\.(\\d+)$");
var OK=nomChamp.match(RegExTest);
if (OK) {
listeChamps+="\""+OK[1]+"\": "+(-1*(i+1)).toString()+",";
}
}
var listeChamps=listeChamps.substring(0, listeChamps.length-1);
listeChamps+="\}";
eval(listeChamps);
var bDialogue={
initialize: function(bDialogue) {
this.loadDefaults(bDialogue);
},
loadDefaults: function(bDialogue) {
bDialogue.load({
LCha: listeChamps,
})
},
validate: function(bDialogue) {
var oRslt=bDialogue.store();
var elements=bDialogue.store()["LCha"];
var testOK=true;
for (var i in elements) {
if (elements>0) {
valeurListe=listeChamps;
nomListe=i;
}
}
if (valeurListe>0) var testOK=false;
if (!testOK) app.alert("Veuillez sélectionner un nom de champ.",3);
return testOK;
},
description: {
name: "Générer des menus déroulants",
elements: [
{
type: "view",
elements: [
{
type: "view",
alignment: "align_fill",
elements: [
{
type: "static_text",
name: "Champs à double indices",
font: "dialog",
bold: true,
},
{
type: "static_text",
name: "Sélectionnez...",
},
{
type: "popup",
item_id: "LCha",
width: 150,
alignment: "align_fill",
},
]
},
{
type: "gap",
height: 5
},
{
type: "ok_cancel",
},
]
},
]
}
};
if("ok"==app.execDialog(bDialogue)){
debutChamp=nomListe;
lesIndices=[];
var leChamp="- Liste des seconds indices -";
var listeChamps="var listeChamps \= \{\""+leChamp+"\": "+(nbChamps+1)+",";
for (var i=0; i < nbChamps; i++) {
var nomChamp=this.getNthFieldName(i);
var RegExTest=new RegExp("^"+nomListe+"\\.(\\d+)$");
var OK=nomChamp.match(RegExTest);
if (OK) {
lesIndices.push("0"+OK[1].slice(-2));
}
}
var listeChamps=listeChamps.substring(0, listeChamps.length-1);
listeChamps+="\}";
eval(listeChamps);
//
var nbH=Math.ceil(Math.sqrt(lesIndices.length));
var nbV=Math.ceil(lesIndices.length/nbH);
numIndice=0;
champsCaC="[";
for (var i=0; i<nbH; i++) {
champsCaC+="{type: \"view\",elements: [";
for (var j=0; j<nbV; j++) {
if (numIndice<lesIndices.length) {
champsCaC+="{type: \"check_box\",item_id: \"cb"+lesIndices[numIndice]+"\",name: \" ."+Number(lesIndices[numIndice])+"\",},";
numIndice++;
} else break;
}
champsCaC+="]},{type: \"static_text\",name: \" \",},"
}
champsCaC+="]";
//
var bDialogue={
validate: function(bDialogue) {
var oRslt=bDialogue.store();
for (var i=0; i<lesIndices.length; i++)eval("theCB"+i+"=oRslt[\"cb"+lesIndices+"\"];")
var testOK0=true;
var txtTest="";
for (var i=0; i<lesIndices.length; i++){
txtTest+="theCB"+i+"==false";
if (i<lesIndices.length-1) txtTest+=" && ";
}
if (eval(txtTest)) var testOK0=0;
var testOK1=true;
lesElements=oRslt["elem"].replace(/^\s+|\s+$/g,"").replace(/\s+/g,"\r");
if (lesElements=="") var testOK1=0;
if (!testOK0) app.alert("Veuillez sélectionner au moins un indice pour le champ "+debutChamp+".",3);
else if (!testOK1) app.alert("Veuillez indiquer les éléments à ajouter pour les indices sélectionnés pour le champ "+debutChamp+".",3);
var testOK=(testOK0 && testOK1);
return testOK;
},
description: {
name: "Générer des menus déroulants",
elements: [
{
type: "view",
elements: [
{
type: "view",
alignment: "align_fill",
elements: [
{
type: "static_text",
name: "Seconds indices du champ "+debutChamp,
font: "dialog",
bold: true,
},
{
type: "static_text",
name: "Sélectionnez...",
},
{
type: "view",
align_children: "align_top",
elements: eval(champsCaC)
},
{
type: "gap",
height: 5
},
{
type: "static_text",
name: "Élément des menus déroulants",
font: "dialog",
bold: true,
},
{
type: "static_text",
name: "Indiquez une liste à intégrer",
},
{
type: "edit_text",
item_id: "elem",
multiline: true,
alignment: "align_fill",
height: 150
}
]
},
{
type: "gap",
height: 5
},
{
type: "ok_cancel",
},
]
},
]
}
};
if("ok"==app.execDialog(bDialogue)){
lesElements=lesElements.split("\r");
lesElements.unshift("?");
for (var i=0; i<lesIndices.length; i++) {
if (eval("theCB"+i)) this.getField(debutChamp+"."+i).setItems(lesElements);
}
}
}
} else app.alert("Il n'y a pas de champ dans ce document.",3);

@+
😎

Attachments:
You must be logged in to view attached files.