Donnez vie à vos documents numériques !
 

Script pour afficher / masquer les boutons à la volée. – RÉSOLU

abracadabraPDF Forums PDF – Général Script pour afficher / masquer les boutons à la volée. – RÉSOLU

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #44066
    Yorigami
    Membre

    Bonsoir à toutes et à tous.
    Je travaille sur un document qui n’est pas compliqué, mais qui est très long à réaliser.

    C’est une espèce de formulaire qui sera projeté en salle de conférence.
    Ce Formulaire contient 200 questions qui sont proposées par l’animateur.
    Sur le document projeté, chaque réponse est masquée par un bouton gris.
    Quand on clique sur le bouton, ce dernier disparait et laisse apparaitre la réponse.

    J’ai attaqué le problème par une série de boutons avec pour tous des libellés différents 1-1, 1-2, 1-3 etc. puis page suivante 2-1, 2-2, 2-3 etc. et une action simple sur chaque bouton, “au clic masquer le bouton1-1”, “au clic masquer le bouton1-2″… etc.
    Pour chaque série de questions, j’ai un bouton qui refait apparaitre tous les boutons de la série, au clic afficher les boutons 1-1 + boutons 1-2 + boutons 1-3, etc.

    Existe-t-il un script ou une solution susceptible de rendre cette réalisation moins répétitive et fastidieuse ? Il m’avait semblé avoir trouvé ici même un script qui permettait d’afficher à la volée tous les boutons listés, mais je n’ai pas été fichu de remettre la main dessus.  :Euuuh:

    (Je suis resté sous Acrobat 9)

    Je vous bonne fêtes de fin d’année et merci pour votre aide.

Affichage de 19 réponses de 1 à 19 (sur un total de 19)
  • Auteur
    Réponses
  • #52392
    Merlin
    Maître des clés

    Salut Yori,

    je ne comprend pas bien, veux tu un script pour créer les boutons-masques, ou bien un script pour les réafficher, ou bien les deux ?

    :doute:

    #52393
    Yorigami
    Membre

    Bonjour Merlin, vas-tu bien ?
    Ben pour créer les boutons ce n’est pas le problème, ni pour les masquer, ni pour les réafficher, c’est la quantité à gérer.
    Je passe par la petite fenêtre des propriétés >> Actions, et avec 50 boutons dans la petite fenêtre c’est déjà orgiaque.  Obliger de scroller comme un fou à chaque nouveau bouton…

    Alors, je me demandais s’il n’était pas possible au minimum d’avoir une script qui attribue la fonction de masquage au bouton genre [au clic sur ce bouton 1-1, masquer le bouton 1-1] et un autre script pour le bouton qui réaffiche genre [au clic sur ce bouton_Réinitialiser_les_boutons_chapitre 1, réafficher les boutons 1-1; les boutons 1-2; les boutons 1-2].
    cela éviterait de se palucher le scrolling et aussi d’avoir la fenêtre qui se repositionne par défaut sur “souris relâchée”  :oh:

    #52394
    alex
    Participant

    Pour résoudre ce problème il faut attribuer aux champs texte et aux boutons des noms génériques du style :
    Bouton_pp_xxx où pp est le numéro de page (de 00 à 99) et xxx le rang du bouton sur la page considérée.
    Question_pp_xxx où pp est le numéro de page (de 00 à 99) et xxx le rang du bouton sur la page considérée.
    Reponse_pp_xxx où pp est le numéro de page (de 00 à 99) et xxx le rang du bouton sur la page considérée.
    Ensuite, pour chaque action, un script unique sera capable de reconnaître l’origine de l’action (event.target.name), de s’assurer de la validité de son nom (event.target.name.substring(0,6)==”Bouton”) puis d’agir sur les champs associés de même page et même rang soit le champ ayant pour nom:”Reponse”+event.target.name.substring(7,13).
    Nota:on peut se passer du numéro de page et ne traiter que les rangs des questions.

    Eh oui, un ou deux scripts suffisent à cette affaire !

    Envoyez quelques pages de votre questionnaire, le script en place, le reste suivra…

    #52395
    Yorigami
    Membre

    Merci Alex, je vais essayer de mettre en pratique vos conseils.

    #52396
    Yorigami
    Membre

    Après une grosse matinée et quelques plantages mémorables d’Acrobat, et un subit coup de sang, j’ai abandonné le scriptage du fichier.
    Compte tenu de mes connaissances, cela reste trop abstrait dans la réalisation et le temps passé ce matin s’est soldé à une impossibilité évidente à mettre en corrélation chaque élément les uns par rapport aux autres.

    J’ai donc réalisé mon document avec la bonne vieille méthode empirique, ce fut long, barbant, mais adapté à la limitation de mes compétences dans ce domaine.

    Merci pour vos conseils.

    #52397
    alex
    Participant

    Dommage, et la prochaine fois ?
    Je vais vous faire une petite maquette, vous comprendrez la méthode et pourrez l’adapter la prochaine fois…

    #52398
    Merlin
    Maître des clés

    Bonjour Merlin, vas-tu bien ?

    Ca va, je suis dans une station alpestre pas très loin de la tienne à vol d’oiseau (d’Oisans ? ;-))
    Il fait beau et la neige est bonne.

    Sinon j’aurais une approche différente de celle d’Alex.

    1- il est facile de créer un bouton-masque sur chacune des pages d’un document en utilisant un script, l’exemple est fourni dans la doc, si besoin je peux le retrouver et l’adapter.

    2- concernant la réapparition des champs j’utiliserais la “convention de dénomination des champs de formulaire” d’Adobe où le point placé dans le nom des champ sert à séparer les générations, exemple :
    GrandParent.Parent.Enfant.PetitEnfant.etc

    Dans ton cas le champ masque “parent” pourrait s’appeler Masque, et les champs “enfants” s’appelleraient Masque.1, Masque.2, Masque.3, etc. en fonction de la page sur laquelle il sont placés.

    A partir de là une simple ligne de script suffit pour les réafficher tous, en s’adressant au champ “parent” :
    this.getField(“Masque”).hidden = true;

    Que l’on peut commander depuis un bouton, un signet, ou la console.
    Ce qui n’empêche pas les instructions individuelles pour le masquage au fur et à mesure de l’utilisation des pages.

    Sinon, comme disait Alex, poste nous un exemple de quelques pages pour qu’on y voit plus clair.

    :Smiley01:

    #52399
    Yorigami
    Membre

    Merci pour vos encouragements, explications et votre proposition que j’accepte volontiers et qui je n’en doute pas me servira sans nul doute pour un prochain formulaire.

    Merlin, mais où es-tu donc ? Hautes Alpes ?
    Effectivement, beaucoup de neige et un réchauffement annoncé pour demain avec une isotherme 0 très haute. Gare à l’avidité de la pente vierge maculée de sillons.
    Nos montagnes sont belles comme des déesses blanches. Avant de partir, n’oubliez jamais que pour les plus intrépides, le voile blanc de nos pentes devient parfois un linceul.  :Smiley02:

    #52400
    Merlin
    Maître des clés

    Puy-Saint-Vincent, “Aux portes des Ecrins”.
    Mais les déesses blanches ne m’auront pas comme client, je préfère les pistes damées aux pistes damnées…
    :Smiley03:

    #52401
    Yorigami
    Membre

    Bonjour à toutes et à tous,
    je reviens sur la proposition d’Alex d’une maquette simple pour que je puisse appréhender les subtilités de la construction du fichier.
    Si cela est toujours envisageable, je serai très intéressé, car le fichier que j’ai produit semble satisfaire et je dois en produire d’autres prochainement.

    Merci d’avance et bonne année 2012 à toute l’équipe d’abracadabrapdf et bon PDF à tous.  :soleil:

    #52402
    alex
    Participant

    Bonne année à tous.
    Je vais donner un exemple dans les prochains jours.

    #52403
    Yorigami
    Membre

    Super, merci beaucoup pour votre disponibilité.  :bravo:

    #52404
    Yorigami
    Membre

    Bonjour à toutes et à tous,
    je ne voudrais pas être impolis ou trop insistant, mais, cher Alex, si vous pouviez penser à mon fichier.

    Merci par avance.

    #52405
    alex
    Participant

    Desole. Je suis sur un lit d ‘hôpital avec un iPhone. Retour prévu pour le 23 janvier.

    #52406
    Merlin
    Maître des clés

    Bon rétablissement.
    Reviens nous vite !

    nf1b.png

    #52407
    Yorigami
    Membre

    :Ooops:, je me joins à Merlin et sa jolie infirmière pour vous souhaiter un prompt rétablissement et un retour en pleine forme.

    #52408
    Lionel
    Membre

    Bon rétablissement.

    À bientôt en maxi forme; Alex.  :Smiley03:

    Amicalement.

    Lionel

    PS : sympa l’infirmière.  :soleil:

    #52409
    Merlin
    Maître des clés

    Je ne sais pas si Yorigami peut poster son document qui m’est parvenu en privé, pour nos autres lecteurs voici la solution proposée :

    Les champs de formulaire sont nommés ainsi, pour utiliser la “Convention de dénomination” :

    form111.1.Bouton.1, form111.1.Bouton.2, form111.1.Bouton.3, etc.
    form111.2.Bouton.1, form111.2.Bouton.2, form111.2.Bouton.3, etc.
    form111.3.Bouton.1, form111.3.Bouton.2, form111.3.Bouton.3, etc.

    – Où form111 est la racine parente commune au document (choisie au hasard, il vaut mieux qu’elle soit différente pour chaque document, surtout s’ils sont susceptibles d’être ouverts en même temps),

    – où form111.1, form111.2, etc. est la racine parente commune à chaque section,

    – et où la suite est le petit nom de chaque bouton/masque.
    C’est le type de structure de nom que l’on obtient quand on demande à “Placer plusieurs champs” (au clic-droit).

    Le bouton réinitialisation de chaque section n’a qu’une seule ligne de script à exécuter, dans laquelle on s’adresse à la racine parente de la section, et donc à tous les éléments dont le nom commence par cette racine :

    this.getField(“form111.1”).display = display.visible;

    ==> La visibilité de tous les éléments dont le nom commence par “form111.1” = visible

    Le bouton de réinitialisation globale (Réinitialiser tout) fonctionne sur le même principe mais en ne s’adressant qu’à la première racine, celle du document :

    this.getField(“form111”).display = display.visible;

    ==> La visibilité de tous les éléments dont le nom commence par “form111” = visible

    Quand aux boutons/masques, ils ne contiennent chacun qu’une seule ligne de script dans laquelle on lui demande de se masquer lui-même, et c’est la même pour tous (on peut l’appliquer d’un seul coup d’un seul, soit avant la duplication de ces champs, soit après en les sélectionnant tous) :

    event.target.display = display.hidden;

    ==> La visibilité de la cible de l’évènement utilisateur = masqué

    :Smiley01:

    #52410
    Yorigami
    Membre

    Je renouvelle mes remerciements pour les explications très claires, ainsi que pour l’adaptation au fichier envoyé en MP.
    C’est tip-top et super rapide à réaliser.

    Que du bonheur…  :soleil:

    Merci et  :bravo:

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