abracadabraPDF › Forums › PDF – Général › Choix de Zone de liste vers liste déroulante
- Ce sujet contient 11 réponses, 3 participants et a été mis à jour pour la dernière fois par Merlin, le il y a 1 semaine.
- CréateurSujet
- 1 octobre 2024 à 13:07 #74972jctremblayParticipant
Dans un but d’éducation personnel, j’essaie de comprendre comment transférer les valeurs d’une Zone de liste vers: champs de texte, message d’alerte, liste déroulante. À l’aide de bouton ça va.
Dans le document ici, la ou je bloque, c’est de réussir le même résultat, mais de façon automatique sans bouton.
De la Zone de liste vers un champ ça va, mais je dois quitter le champ de Zone de liste. Pour de la Zone de liste vers une liste déroulante, je suis bloqué complètement.
Attachments:
You must be logged in to view attached files. - CréateurSujet
- AuteurRéponses
- 1 octobre 2024 à 14:25 #74974MerlinMaître des clés
Bonjour
Ci-joint, le script est dans le champ “zone2”.
Je l’ai placé en action champ désactivé car comme la sélection multiple est autorisée ça ne fonctionne pas correctement en action “changement de sélection”.
this.getField("choix2").value = event.value;
var f = this.getField("zone2");
var a = f.currentValueIndices;
if (typeof a == "number") {// A single selection (type: number)
this.getField("pop2").setItems([f.value]);
}
else { // Multiple selections (type: array)
this.getField("pop2").setItems(f.value);
}
Attachments:
You must be logged in to view attached files.1 octobre 2024 à 15:06 #74978jctremblayParticipantJe l’ai placé en action champ désactivé car comme la sélection multiple est autorisée ça ne fonctionne pas correctement en action “changement de sélection”.
Merci! C’est ce que j’avais remarqué. Donc, “selection multiple” et “changement de sélection” ne fonctionne pas ensemble.
2 octobre 2024 à 19:46 #74991bebarthMaître des clésbonjour,
Si tu veux que ça fonctionne dynamiquement, il faut utiliser “event.changeEx” en script de “Changement de sélection”. Je pense qu’il faut également utiliser un “calculateNow()” car il n’est pas possible de “Valider la valeur sélectionnée immédiatement” avec une “Sélection multiple”.
J’ai une petite idée mais je ne peux l’essayer en ce moment. Je regarderai ce weekend si tu n’y arrives pas…@+
😎2 octobre 2024 à 19:54 #74992jctremblayParticipantJe suis complètement débordé avec tout le TAF urgent à terminé! C’est un document d’expérimentation, donc pas d’urgence. Merci!
3 octobre 2024 à 07:50 #74994bebarthMaître des clésJe suis complètement débordé avec tout le TAF urgent à terminé!
Ne m’en parle pas !!! Tu verras quand tu seras à la retraite :-)… même pas le temps de procrastiner un peu !
@+
😎7 octobre 2024 à 14:39 #75019jctremblayParticipant@bebarth
J’ai réussi à faire que les choix multiples d’une zone de liste se copient en temps réel dans un champ de texte. Il y a donc un script lors du changement de choix, et un script de calcul dans le champ pour mettre en forme les valeurs reçues.
(voir le PDF pour les codes).Par contre je n’y suis pas arrivé encore pour une zone de liste vers une liste déroulante.
Attachments:
You must be logged in to view attached files.7 octobre 2024 à 19:50 #75025bebarthMaître des clésbonjour Jean-Claude,
J’ai à peu près le même process que toi.
Au début, comme je te l’avais dis, j’étais parti pour exécuter un uniquement script à partir du champ liste, mais ça ne fonctionnait qu’à moitié. Lorsqu’on ajoutait ou supprimait un élément à la fois ça marchait mais si on avait déjà sélectionné plusieurs éléments et que d’un seul coup on n’en sélectionnait plus qu’un seul, ça ne marchait plus. En fait, event.value ne change pas lorsque change de focus, mais si on revient au champ liste et comme event.changeEx est le nouvel élément sélectionné, ça ne marchait pas !!!
Tout ça pour dire que j’en suis revenu également à 2 scripts.
Le script déclencheur en “Changement de sélection” uniquement pour changer de focus et donc lancer le cacul :
if (!event.willCommit) this.getField("choix2").setFocus();
Et un script de calcul :
var indices=this.getField("zone2").currentValueIndices;
if (indices==-1) {
event.value="";
this.getField("pop2").clearItems();
} else {
if (typeof indices=="number") {
event.value=this.getField("zone2").getItemAt(indices, false);
this.getField("pop2").setItems([this.getField("zone2").getItemAt(indices, false)]);
} else {
var liste=[];
for (var i=0; i<indices.length; i++) liste.push(this.getField("zone2").getItemAt(indices, false));
event.value=liste.toString().replace(/,/g,"\r");
this.getField("pop2").setItems(liste);
}
}
@+
😎Attachments:
You must be logged in to view attached files.7 octobre 2024 à 22:16 #75030MerlinMaître des clésbebarth est un génie !
7 octobre 2024 à 22:27 #75031jctremblayParticipant… et on aime ça le «frotter» un peu. Il en sort toujours quelque chose d’épatant! 😀
8 octobre 2024 à 14:16 #75039bebarthMaître des clésbonjour,
Vous êtes gentils… Je doute qu’outre Atlantique on me considère comme sorti des Mille et une nuits !Je ne suis pas certain d’avoir été très clair la dernière fois, mais généralement lorsque j’ai quelque chose dans la tête je ne l’ai pas au… tre part !
Lorsque on veut sélectionner plusieurs éléments dans une liste, on doit appuyer sur la touche ctrl sur PC et opt ou cmd sur Mac. Donc si on appuie pas sur une de ces touches, cela signifie que l’on désélectionne tous les éléments précédents !
Je viens de me rappeler que event.modifier contrôle justement si on appuyait sur la touche. J’ai donc pu terminer cette première version.
On a donc un script champ activé :
var indices=event.target.currentValueIndices;
if (indices==-1) {
var liste=[];
} else {
if (typeof indices=="number") var liste=[event.target.getItemAt(indices, false)];
else {
var liste=[];
for (var i=0; i<indices.length; i++) liste.push(event.target.getItemAt(indices, false))
}
}
Puis un script “Changement de sélection” :
if (!event.willCommit) {
if (!event.modifier) {
if (event.value==event.changeEx) {
this.getField("choix2").value="";
this.getField("pop2").clearItems();
var liste=[];
} else {
this.getField("choix2").value=event.changeEx;
this.getField("pop2").setItems([event.changeEx]);
var liste=[event.changeEx];
}
} else {
liste.push(event.changeEx);
for (var i=0; i<liste.length-1; i++) {
if (liste==event.changeEx) {
liste.splice(i,1);
liste.pop();
break;
}
}
liste.sort(function(a, b){return a.localeCompare(b)});
this.getField("choix2").value=liste.toString().replace(/,/g,"\r");
this.getField("pop2").setItems(liste);
}
}
Sauf que l’api reference indique “The modifier key on the Microsoft Windows platform is Control and on the Mac OS platform is Option or Command” et apparemment la touche option fonctionne sur Mac. Je suis donc obligé d’appuyer simultanément sur option et commande pour que ça fonctionne.
Pourriez-vous me dire si ça marche sur PC avec la touche ctrl !@+
😎Attachments:
You must be logged in to view attached files.8 octobre 2024 à 14:33 #75041MerlinMaître des clésQuand je te dis que tu es un génie !
Sur Windows ça fonctionne parfaitement avec la touche Ctrl ou avec la touche AltGr (qui correspond à la touche Alt/Option du Mac). Ça fonctionne aussi très bien avec la touche Ctrl et la touche AltGr en même temps.
Et aussi avec la touche majuscule pour la sélection continue.
- AuteurRéponses
- Vous devez être connecté pour répondre à ce sujet.