abracadabraPDF › Forums › PDF – Général › Liste déroulante et changement d’image
Étiqueté : Dropdown
- Ce sujet contient 20 réponses, 4 participants et a été mis à jour pour la dernière fois par jctremblay, le il y a 1 année et 7 mois.
-
CréateurSujet
-
29 avril 2023 à 19:30 #72874Kcirtap24Participant
Bonsoir,
Je souhaite faire une liste déroulante (Dropdown) avec comme liste d’éléments : bleu jaune vert rouge .
L’idée étant de sélectionner bleu pour faire apparaitre la gommette bleu , Jaune pour la gommette jaune etc..
J’avais fait un peu ce genre la, avec deux images l’une sur l’autre avec deux Check Box . Mais là j’aimerai par manque de place utiliser Dropdown .
Avez vous un exemple de fichier pdf ou un bout de code que j’essai de faire cette réalisation svp ?
Vous en remerciant par avance
Patrick.
-
CréateurSujet
-
AuteurRéponses
-
29 avril 2023 à 22:36 #72879bebarthMaître des clés
bonjour,
Voici un script de touches personnalisé pour le menu déroulant :
if (!event.willCommit) {
switch (event.changeEx) {
case "Bleu":
var couleur=["RGB",0,0,1];
break;
case "Jaune":
var couleur=["CMYK",0,0,1,0];
break;
case "Vert":
var couleur=["RGB",0,1,0];
break;
default:
var couleur=["RGB",1,0,0];
}
this.getField("gommette").fillColor=couleur;
}
@+
😎Attachments:
You must be logged in to view attached files.30 avril 2023 à 12:39 #72884Kcirtap24ParticipantBonjour, et bon dimanche merci pour la réponse rapide.
Voilà ce que j’ai modifié j’ai laissé le carre de couleur et j’ai ajouté les gommettes
J’ai crée une sélection vide pour ne pas avoir de gommette visible (je ne sais pas si c’est comme cela qu’il faut faire mais ça fonctionne !)
if (!event.willCommit) {
switch (event.changeEx) {
case ” “:
var couleur=[“RGB”,1,1,1];this.getField(“ijaune”).display = display.hidden;
this.getField(“irouge”).display = display.hidden;
this.getField(“iverte”).display = display.hidden;
this.getField(“ibleu”).display = display.hidden;
break;
case “Bleu”:
var couleur=[“RGB”,0,0,1];
this.getField(“ijaune”).display = display.hidden;
this.getField(“irouge”).display = display.hidden;
this.getField(“iverte”).display = display.hidden;
this.getField(“ibleu”).display = display.visible;
break;
case “Jaune”:
var couleur=[“CMYK”,0,0,1,0];
this.getField(“irouge”).display = display.hidden;
this.getField(“iverte”).display = display.hidden;
this.getField(“ibleu”).display = display.hidden;
this.getField(“ijaune”).display = display.visible;
break;
case “Vert”:
var couleur=[“RGB”,0,1,0];
this.getField(“ijaune”).display = display.hidden;
this.getField(“irouge”).display = display.hidden;
this.getField(“ibleu”).display = display.hidden;
this.getField(“iverte”).display = display.visible;
break;
default:
var couleur=[“RGB”,1,0,0];
this.getField(“ijaune”).display = display.hidden;
this.getField(“ibleu”).display = display.hidden;
this.getField(“iverte”).display = display.hidden;
this.getField(“irouge”).display = display.visible;
}
this.getField(“gommette”).fillColor=couleur;
}Merci bonne après midi.
Patrick
Attachments:
You must be logged in to view attached files.30 avril 2023 à 14:04 #72886bebarthMaître des clésbonjour,
Dans ce cas on peut simplifier un peu le script :
if (!event.willCommit) {
this.getField("gommette").fillColor=["RGB",1,1,1];
this.getField("ijaune").display=display.hidden;
this.getField("irouge").display=display.hidden;
this.getField("iverte").display=display.hidden;
this.getField("ibleu").display=display.hidden;
switch (event.changeEx) {
case "Bleu":
this.getField("gommette").fillColor=["RGB",0,0,1];
this.getField("ibleu").display=display.visible;
break;
case "Jaune":
this.getField("gommette").fillColor=["CMYK",0,0,1,0];
this.getField("ijaune").display=display.visible;
break;
case "Vert":
this.getField("gommette").fillColor=["RGB",0,1,0];
this.getField("iverte").display=display.visible;
break;
case "Rouge":
this.getField("gommette").fillColor=["RGB",1,0,0];
this.getField("irouge").display=display.visible;
}
}
@+
😎Attachments:
You must be logged in to view attached files.30 avril 2023 à 16:29 #72888Kcirtap24ParticipantMerci beaucoup,👍
Très bon dimanche et 1er Mai 😀
Patrick.
1 mai 2023 à 09:32 #72889MerlinMaître des clésBonjour
À la place de plusieurs boutons de couleur, j’aurais plutôt utilisé une case à cocher avec un style de case “rond” et je lui aurait fait changer de couleur en même temps que la gommette.
1 mai 2023 à 10:22 #72893Kcirtap24ParticipantBonjour, merci pour cette deuxième piste, à bientôt.
Bon 1 er mai à tous, et encore merci de votre aide.
Patrick
4 mai 2023 à 02:55 #72897jctremblayParticipantQuel beau hasard, je suis justement en train de faire ce genre de manipulation pour changer la couleur. C’est parfait. Par contre j’aimerai mettre ce script dans un fonction de script de document. Et configurer les variables (les champs «gommette» et la liste «couleurs») pour qu’ils soient automatiser selon le nom des champs ex: «couleurs.0» affecteras automatiquement «gommette.0», «couleurs.1» affecteras «gommette.1», etc.. Cela serait plus facile à modifier, et surtout lorsqu’une série de champs «couleurs/gommette» se retrouve dans une page.
Je sais que ça se fait… mais je suis perdu! 😀
4 mai 2023 à 03:16 #72898jctremblayParticipantActuellement j’ai ceci comme script de document. Et je ne met que light(“gommette.2”); dans la zone de script de touche personnalisé
function light(gommette)
{
var field = this.getField(gommette);
if (!event.willCommit) {
switch (event.changeEx) {
case "Oui":
var couleur=["RGB",0,1,0];
break;
case "Partiellement":
var couleur=["RGB",1,1,0];
break;
case "Non":
var couleur=["RGB",1,0,0];
break;
default:
var couleur=["T"];
}
this.getField(gommette).fillColor=couleur;
}
}
J’aimerai éliminer la nécessité d’entrée le nom du champs de la gomette.
4 mai 2023 à 08:46 #72899MerlinMaître des clésA priori c’est faisable (en récupérant le numéro suffixe ?) mais il faudrait que tu en dises plus car je ne comprend pas bien le but, sinon en supposant qu’il y aura plusieurs champs.
4 mai 2023 à 08:47 #72900bebarthMaître des clésbonjour,
Si j’ai bien compris, tu dois appeler la fonction avec :
light(event.target.name);
N’importe quoi !!! ça va changer la couleur du menu déroulant…
Comme le dit Merlin, si tu as plusieur menus déroulants et plusieurs gommettes avec le même indice, lu appelles la fonction avec :
light(event.target.name.substr(event.target.name.indexOf(".")+1));
@+
😎- Cette réponse a été modifiée le il y a 1 année et 7 mois par bebarth.
4 mai 2023 à 12:22 #72902jctremblayParticipantOui, il y aura plusieurs séries de champs liste «couleurs» et «gommette».
Si j’appelle la fonction
light(event.target.name.substr(event.target.name.indexOf(".")+1));
Il ne se passe rien, probablement car à la fin dans le this.getField(gommette).fillColor=couleur;
le suffix n’est pas ajouter. L’extraction du suffix devrait être récupérer dans le script de document et non pas dans l’appelle de la fonction.je continue mes essai.
4 mai 2023 à 12:27 #72903bebarthMaître des clésPeux-tu partager un fichier ?
@+
😎4 mai 2023 à 12:44 #72904jctremblayParticipantLe voici…
Attachments:
You must be logged in to view attached files.4 mai 2023 à 12:51 #72907jctremblayParticipantJ’ai pensé à quelques choses comme ça, mais cela ne fonctionne pas.
function light()
{
var cName = event.target.name;
var nSuffix = cName.substring(cName.lastIndexOf('.')+1);
if (!event.willCommit) {
switch (event.changeEx) {
case "Oui":
var couleur=["RGB",0,1,0];
break;
case "Partiellement":
var couleur=["RGB",1,1,0];
break;
case "Non":
var couleur=["RGB",1,0,0];
break;
default:
var couleur=["T"];
}
this.getField("gomette." + nSuffix).fillColor=couleur;
}
}
4 mai 2023 à 12:56 #72908jctremblayParticipantPutain… mon dernier script modifié marche bien. J’avais oublié un «m» dans gommette… 😮
4 mai 2023 à 13:13 #72909bebarthMaître des clés👍
Juste pour info, voici comment j’aurais écrit le script :
// Fonction en script de document
function light(nSuffix) {
switch (event.changeEx) {
case "Oui":
var couleur=["RGB",0,1,0];
break;
case "Partiellement":
var couleur=["RGB",1,1,0];
break;
case "Non":
var couleur=["RGB",1,0,0];
break;
default:
var couleur=["T"];
}
this.getField("gommette."+nSuffix).fillColor=couleur;
}
// Script de touches personnalisé
if (!event.willCommit) light(event.target.name.substr(event.target.name.indexOf(".")+1));
@+
😎Attachments:
You must be logged in to view attached files.4 mai 2023 à 13:23 #72911jctremblayParticipantC’est bon aussi… 😀
Tu sais pourquoi, un bouton réinitialiser le formulaire ne remets la couleur de défaut des «gommettes»?
4 mai 2023 à 14:50 #72912jctremblayParticipantJ’ai utilisé ceci au lieu d’un bouton Réinitialiser standard et cela marche.
this.resetForm();
var gReset = this.getField("gomette");
gReset.fillColor = color.transparent;
4 mai 2023 à 20:36 #72913MerlinMaître des clés“Réinitialiser” signifie “revenir à la valeur par défaut” (reset to default value).
Ça ne concerne que la valeur du champ et donc aucun autre de ses attributs.
4 mai 2023 à 21:16 #72916jctremblayParticipantCela a du sens… même si en réinitialisant les champs de listes, je n’attendais à ce qu’ils exécutent à nouveau la fonction de script personnalisé incluse dans ceux-ci. Ce qui n’est pas le cas.
-
AuteurRéponses
- Vous devez être connecté pour répondre à ce sujet.