Donnez vie à vos documents numériques !
 

Choix de Zone de liste vers liste déroulante

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éateur
    Sujet
  • #74972
    jctremblay
    Participant

    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.
Affichage de 11 réponses de 1 à 11 (sur un total de 11)
  • Auteur
    Réponses
  • #74974
    Merlin
    Maî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.
    #74978
    jctremblay
    Participant

    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”.

    Merci! C’est ce que j’avais remarqué. Donc, “selection multiple” et “changement de sélection” ne fonctionne pas ensemble.

    #74991
    bebarth
    Maître des clés

    bonjour,
    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…

    @+
    😎

    #74992
    jctremblay
    Participant

    Je suis complètement débordé avec tout le TAF urgent à terminé! C’est un document d’expérimentation, donc pas d’urgence. Merci!

    #74994
    bebarth
    Maître des clés

    Je 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 !

    @+
    😎

    #75019
    jctremblay
    Participant

    @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.
    #75025
    bebarth
    Maître des clés

    bonjour 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.
    #75030
    Merlin
    Maître des clés

    bebarth est un génie !

    #75031
    jctremblay
    Participant

    … et on aime ça le «frotter» un peu. Il en sort toujours quelque chose d’épatant! 😀

    #75039
    bebarth
    Maître des clés

    bonjour,
    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.
    #75041
    Merlin
    Maître des clés

    Quand 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.

Affichage de 11 réponses de 1 à 11 (sur un total de 11)
  • Vous devez être connecté pour répondre à ce sujet.