Donnez vie à vos documents numériques !
 

Position des champs

abracadabraPDF Forums PDF – Général Position des champs

  • Créateur
    Sujet
  • #74348
    michel c.
    Participant

    Bonjour, j’ai une demande qui n’est pas simple et je ne sais pas si c’est faisable.

    J’ai dans mon document mis en lien des champs pour la saisie des propositions des élèves (nommés Q.a.b) et en vis à vis les champs contenant les réponses exactes (nommés R.a.b)

    J’aimerais créer une case à cocher (cachée pour les élèves) qui permettrait d’afficher ou non le corrigé.

    Pour cela, il faudrait que les caractéristiques initiales (position en x et en y, hauteur, largeur et taille de police) de chaque champ R.a.b soient stockées dans une variable et lorsque la case est cochée, chacun de ces champ prenne la place, taille et taille de police de chaque champ Q.a.b et que ceux-ci soient cachés.

    Lorsque la case est décochée, alors chaque champ R.a.b reprendrait ses positions et caractéristiques initiales (les infos stockées dans les variables) et chaque champ Q.a.b redevienne visible.

    J’ai conscience que c’est un peu tiré par les cheveux…

    Attachments:
    You must be logged in to view attached files.
Affichage de 17 réponses de 1 à 17 (sur un total de 17)
  • Auteur
    Réponses
  • #74351
    michel c.
    Participant

    Si c’est plus simple, intervertir les positions et caractéristiques des champs Q.a.b et R.a.b

    #74352
    Merlin
    Maître des clés

    Le plus simple serait non pas de changer les champs de place mais plutôt de changer leur contenu.

    Ce qui pourrait permettre de placer questions et réponses dans un fichier tableur, et donc de faciliter les mises à jour ou modifications.

    Qu’en penses tu ?

    #74353
    michel c.
    Participant

    L’idée est bonne mais les champs questions sont des listes deroulantes ou des champs textes. Les champs réponses eux sont toujours des champs texte. Et puis je me disait qu’en changeant les positions, il y aurait moins de chances que cela impacte le fonctionnement des autres scripts de ce document qui est déjà une usine à gaz…

    • Cette réponse a été modifiée le il y a 1 semaine et 2 jours par michel c..
    #74355
    bebarth
    Maître des clés

    bonjour,
    Pour ma proposition je crée un champ temporaire identique au champ réponse à la position du champ question que je supprime lorsque la case est décochée. Le script de cet exemple pour la question/réponse 2.16 est :
    var ind=event.target.name.substring(event.target.name.indexOf(".")+1);
    var q=this.getField("Q."+ind);
    var r=this.getField("R."+ind);
    if (event.target.value!="Off") {
    var f=this.addField("tempo", r.type, q.page, q.rect);
    for (var j in f) {
    try {
    if (typeof f[j]!="function" && j!="name" && j!="type" && j!="page" && j!="rect") f[j]=r[j];
    } catch(e) {}
    }
    q.display=display.hidden;
    r.display=display.hidden;
    } else {
    this.removeField("tempo");
    q.display=display.visible;
    r.display=display.visible;
    }

    Juste une remarque au sujet du cartouche représenté : ne manque-t-il pas le symbole de disposition des vues (représenté par un cône et sa vue de gauche – à droite pour l’ISO) ? Indispensable pour la lecture des plans mécaniques…

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    #74357
    michel c.
    Participant

    Bonjour, effectivement je n’avais pas encore placé le symbole de disposition des vues dans le cartouche. Il y est dans le document en pièce jointe.

    J’ai testé, ça correspond à ce que je voudrais faire mais lorsque je place plusieurs cases à cocher (par exemple ici pour les questions 3.4 et 3.7) ça fonctionne bien lorsque l’une ou l’autre est cochée mais ça ne fonctionne plus lorsque les 2 sont cochées.

    Je me demandais si c’était jouable d’avoir une seule case à cocher pour tout le document ou si c’est plus simple une case à cocher par chapitre (une pour tous les champs commençant par Q.1 une autre pour tous les champs commençant par Q.2…)

     

    Merci

    Attachments:
    You must be logged in to view attached files.
    #74359
    bebarth
    Maître des clés

    Je me suis posé la question à savoir s’il n’y avait qu’une seule ou plusieurs cases à cocher.

    En fait, cela dépend de ce que tu veux faire exactement. Si il y a une case par question, il faut rajouter l’indice au nom du champ « tempo » créé (ex. : tempo.2.16 pour mon fichier).

    @+
    😎

    #74360
    michel c.
    Participant

    Merci pour la proposition.Je viens de le faire pour la question 3 (sous le cartouche) et ça fonctionne.

    J’imaginais un seul bouton pour remplacer tous les champs d’un groupe de questions : par exemple un bouton qui afficherait toutes les réponses R.3.b pour la question 3

    J’ai essayé de mettre cela en place mais je dois avoir un souci dans mon code, ça ne fonctionne pas.

    Après si c’est possible de ne pas avoir à mettre en place tous les champs cAc.a.b et de n’avoir qu’une seule case pour chaque groupe de question (une case pour tous les champs R.1.n ; une autre case pour tous les champs R.2.n….)

    L’idée c’est d’avoir un seul fichier dans lequel il y a la question et le corrigé intégré. Ça m’éviterai d’envoyer via le réseau le corrigé pour les élèves qui étaient absents lors d’une séance. Je prendrais le contrôle de leur pc, je saisirais le code admin et en cochant la case, ils auraient le corrigé.

    Parfois j’ai des cours ou exercices qui font une quinzaine de pages et je dois alors fournir à l’élève qui a raté une séance le corrigé pour les 3 premières pages et le reste du document non corrigé, ce qui est assez long (surtout si je dois le faire pour plusieurs élèves qui n’ont pas été absents pendant les mêmes périodes). En cochant les paragraphes pour lesquels je veux afficher la correction me ferait gagner un temps fou.

    En tout cas, grâce à toi, je me rapproche de cet objectif.

    Il y a aussi 2 points que j’aimerais améliorer :

    • dans le cas ou plusieurs réponses sont acceptées (dans le champ R.a.b avec le séparateur | entre chaque réponse acceptable), j’aimerais que dans ce cas précis, seule la chaine de caractère se trouvant avant le 1er séparateur s’affiche. J’ai conscience que cela risque de poser un problème car en décochant la case, alors le champ R.a.b ayant été tronqué des autres réponses acceptées, celles-ci ne seront pas rétablies…
    • J’aimerais également que la taille de la police du champ R.a.b soit remplacée par celle du champ Q.a.b lorsque la case est cochée.

    Merci

    • Cette réponse a été modifiée le il y a 1 semaine et 1 jour par michel c..
    • Cette réponse a été modifiée le il y a 1 semaine et 1 jour par michel c..
    Attachments:
    You must be logged in to view attached files.
    #74364
    michel c.
    Participant

    J’ai réussi à cocher/décocher toutes les checkboxes de la série…

     

    Attachments:
    You must be logged in to view attached files.
    #74366
    bebarth
    Maître des clés

    bonjour,

    dans le cas ou plusieurs réponses sont acceptées (dans le champ R.a.b avec le séparateur | entre chaque réponse acceptable), j’aimerais que dans ce cas précis, seule la chaine de caractère se trouvant avant le 1er séparateur s’affiche.

    Il faut rajouter cette ligne : f.value=r.value.split("|")[0];

    J’aimerais également que la taille de la police du champ R.a.b soit remplacée par celle du champ Q.a.b lorsque la case est cochée.

    Et celle-ci : f.textSize=q.textSize;

    Ci-joint un nouveau fichier.

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    #74369
    michel c.
    Participant

    Bonjour, petit à petit, j’arrive à avoir ce que je veux, cependant il y a 2 trucs que je ne comprends pas :

    Pour le chapitre 3, lorsque je coche une case uniquement, tout fonctionne comme je le souhaite : Le champ R.a.b prend la place du champ Q.a.b et lorsque je décoche cette même case l’inverse se produit.

    Par contre si je sélectionne les 3 premières cases par exemple (cAc.3.1 à c.A.c.3.3), là tout va bien mais quand je décoche l’une de ces cases (par exemple c.A.c.3.2), alors les 2 champs Q.3.1 et Q.3.3 restent masqués alors que je voudrais qu’ils redeviennent visibles.

    L’autre truc que je n’arrive pas à faire, c’est la mise en place de la case : “Case.3” permettant de cocher ou décocher d’un seul coup toutes les cases c.A.c….. (via le script de document : corriger) En fait elles se cochent et se décochent comme je le souhaite mais aucune action liée à leur changement d’état ne se produit…

    Attachments:
    You must be logged in to view attached files.
    #74371
    bebarth
    Maître des clés

    bonjour,

    Par contre si je sélectionne les 3 premières cases par exemple (cAc.3.1 à c.A.c.3.3), là tout va bien mais quand je décoche l’une de ces cases (par exemple c.A.c.3.2), alors les 2 champs Q.3.1 et Q.3.3 restent masqués alors que je voudrais qu’ils redeviennent visibles.

    Lorsque tu supprimes le champ, il faut ajouter l’indice au nom du champ : this.removeField("tempo."+ind);

    L’autre truc que je n’arrive pas à faire, c’est la mise en place de la case : “Case.3” permettant de cocher ou décocher d’un seul coup toutes les cases c.A.c…..

    Les “+” sont mal placés. Il faut écrire : ...this.getField("cAc."+ind+"."+b).value = "Off";... et ...this.getField("cAc."+ind+"."+b).value =1;... Par contre cela coche ou décoche juste les cases mais n’affiche ou ne cache pas les réponses comme lorsque l’on coche les cases individuellement. pour cela il faudrait mettre cela en fonction puis faire une boucle pour rappeler ces fonctions.

    Je regarderai lundi si tu n’y arrives pas !

    @+
    😎

    #74375
    michel c.
    Participant

    Bonjour et merci.

    J’ai corrigé les 2 premières erreurs que tu mentionnes. Pour la mise en fonction et faire une boucle, je cherche…

    Attachments:
    You must be logged in to view attached files.
    #74378
    michel c.
    Participant

    J’ai renommé la case qui sert à cocher toutes les cases cAc.a.b (initialement “Case.n” renommée en cAc.n.0) ; l’indice 0 n’étant pas utilisé ça me simplifie la tâche.

    Par contre, cette case, remplit sa fonction de tout cocher ou décocher mais la croix ne reste pas lorsqu’on la coche, elle disparait aussitôt, il y a un truc que j’ai du louper….

    Attachments:
    You must be logged in to view attached files.
    #74381
    michel c.
    Participant

    Par contre, cette case, remplit sa fonction de tout cocher ou décocher mais la croix ne reste pas lorsqu’on la coche, elle disparait aussitôt, il y a un truc que j’ai du louper….

    Pfff… la couleur du texte était en blanc, voila pourquoi je ne voyais pas la croix…

    Sinon, j’ai mis le script affecté aux cases cAc.a.b en fonction (CorrQuest). Par conte, rien ne se passe si je coche la case cAc.3.0 : toutes les cases sont bel et bien cochées mais sans que cela ne déclenche l’action d’afficher les champs R.a.b en lieu et place des champs Q.a.b

    • Cette réponse a été modifiée le il y a 5 jours et 10 heures par michel c..
    Attachments:
    You must be logged in to view attached files.
    #74384
    michel c.
    Participant

    Je pensais avoir réussi, ça fonctionne parfaitement pour les chapitres 1 et 3 et ça ne marche pas pour le 2ème….J’ai une erreur à la console à la ligne 25 du script corriger : Doc:Open:25: TypeError: r.value.split is not a function

    Je ne vois pas pourquoi le script fonctionne sur les 2 autres chapitres et pourquoi il plante là ….

    Edit : je viens de comprendre : il fallait que je mette r.valueAsString au lieu de r.value.split

     

    • Cette réponse a été modifiée le il y a 5 jours et 8 heures par michel c..
    • Cette réponse a été modifiée le il y a 5 jours et 8 heures par michel c..
    • Cette réponse a été modifiée le il y a 5 jours et 8 heures par michel c..
    • Cette réponse a été modifiée le il y a 5 jours et 7 heures par michel c..
    Attachments:
    You must be logged in to view attached files.
    #74391
    bebarth
    Maître des clés

    bonjour,
    Comme indiqué précédemment, il faut utiliser “valueAsString” pour ces 2 fonctions :
    function CorrQuest(ind) {
    var q=this.getField("Q."+ind);
    var r=this.getField("R."+ind);
    if (event.target.value!="Off") {
    var f=this.addField("tempo."+ind, r.type, q.page, q.rect);
    for (var j in f) {
    try {
    if (typeof f[j]!="function" && j!="name" && j!="type" && j!="page" && j!="rect") f[j]=r[j];
    } catch(e) {}
    }
    f.value=r.valueAsString.split("|")[0];
    f.textSize=q.textSize;
    q.display=display.hidden;
    } else {
    this.removeField("tempo."+ind);
    q.display=display.visible;
    q.readonly=false;
    }
    }
    et
    function corriger(ind) {
    var a = this.getField("cAc."+ind+"."+0).value;
    console.println("indice : " +ind);
    var nCompt = 0;
    for (var i = 0 ; i < this.numFields ; i++) {
    var oChamp = this.getField(this.getNthFieldName(i));
    if ((oChamp.type == "checkbox") && (/cAc./.test(oChamp.name))) {nCompt = nCompt + 1;}
    }
    var nbChamps=0;
    for (var i=0; i<this.numFields; i++) {
    if (this.getNthFieldName(i).indexOf("R."+ind+".")==0) nbChamps++;
    }
    for (b=1 ; b<=nbChamps ; b++) {
    var q=this.getField("Q."+ind+"."+b);
    var r=this.getField("R."+ind+"."+b);
    if (a!="Off") {
    var f=this.addField("tempo."+ind+"."+b, r.type, q.page, q.rect);
    for (var j in f) {
    try {
    if (typeof f[j]!="function" && j!="name" && j!="type" && j!="page" && j!="rect") f[j]=r[j];
    } catch(e) {}
    }
    f.value=r.valueAsString.split("|")[0];
    f.textSize=q.textSize;
    q.display=display.hidden;
    this.getField("cAc."+ind+"."+b).value = 1;
    } else {
    this.removeField("tempo."+ind);
    q.display=display.visible;
    q.readonly=false;
    this.getField("cAc."+ind+"."+b).value = "Off";
    }
    }
    }

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    #74405
    michel c.
    Participant

    Merci, j’avais fait cette modif mais je n’ai pas mis en lien le fichier avec cette modif. Je peux le faire dans la matinée si ça intéresse quelqu’un.

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