Donnez vie à vos documents numériques !
 

Merlin

Toutes mes réponses sur les forums

15 réponses de 1 à 15 (sur un total de 9,619)
  • Auteur
    Réponses
  • Merlin
    Maître des clés

    Oui ne regrette pas trop, pas de JavaScript et une curieuse façon de mémoriser les paramètres.

    C’est une implémentation un peu bancale, mais c’est hélas d’origine.

    en réponse à : Affichage du haut d’une page #70433
    Merlin
    Maître des clés

    Bonjour.

     

    Quand on envoie vers une page via JavaScript le haut de la page ciblée est toujours visible.

     

    // NAVIGATION DANS LES PAGES D'UN DOCUMENT PDF
    // EN JAVASCRIPT LES NUMÉROTATIONS COMMENCENT À ZÉRO, LE NUMÉRO DE LA PAGE CIBLE EST DONC TOUJOURS ÉGAL À N-1

    // aller à la vue précédente*
    app.execMenuItem("GoBack");

    // aller à la page précédente
    this.pageNum--;

    // aller à la page suivante
    this.pageNum++;

    // aller à la dernière page
    this.pageNum = this.numPages - 1;

    // aller à la première page
    this.pageNum = 0;

    // aller à la page 4
    this.pageNum = 3;

    en réponse à : Changer la couleur des textes lors de l’impression #70432
    Merlin
    Maître des clés

    Bonjour Jean-Claude

     

    // CHANGER LA COULEUR DES TEXTES (PAR DÉFAUT) LORS DE L'IMPRESSION

    // ACTION DOCUMENT WILL PRINT
    var bSale = this.dirty;
    for (var i=0; i<this.numFields; i++) {
    var oFld = this.getField(this.getNthFieldName(i));
    if (oFld.type == "text" && oFld.value == oFld.defaulValue) {
    oFld.value = "";
    }
    }
    this.dirty = bSale;

    // ACTION DOCUMENT DID PRINT
    var bSale = this.dirty;
    for (var i=0; i<this.numFields; i++) {
    var oFld = this.getField(this.getNthFieldName(i));
    if (oFld.type == "text" && oFld.value == "") {
    oFld.value = oFld.defaulValue;
    }
    }
    this.dirty = bSale;

    Merlin
    Maître des clés

    Attention : pour cette dernière étape il faut utiliser l’outil Main (mode saisie).

    Attention aussi : il faut que les champs restent remplis (même avec une espace) car sinon ces propriétés ne sont pas enregistrées.

     

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

    Bonjour

     

    Réponse en images.

     

     

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Codes postaux en liaison sur deux casses #70398
    Merlin
    Maître des clés

    Je les ai toutes dans l’ordre chronologique, c’est peut être un problème d’horloge ?

    en réponse à : Codes postaux en liaison sur deux casses #70391
    Merlin
    Maître des clés

    PS : Bizarre, ma réponse est bien la dernière mais n’est pas située après l’avant-dernière de Merlin !!!

    Reload !   🔄

    😉

    en réponse à : Codes postaux en liaison sur deux casses #70382
    Merlin
    Maître des clés

    C’est un paradoxe, pour aider à la saisie de noms de villes à l’orthographe « compliquée » on se retrouve avec un problème avec les noms « simples » qui sont utilisés par plusieurs villes. 🤔

     

    Faute d’avoir une solution j’ai un autre (petit) problème à ajouter : certaines villes partagent un même code postal, si par exemple je cherche Labeaume par son code postal (07120) c’est la ville de Pradons qui s’affiche (c’est la première qui utilise le 07120 dans l’ordre alphabétique inverse).

    De mémoire il y a au moins 5 villes qui partagent ce code postal…

     

    Il va falloir faire confiance au bon sens de l’utilisateur.

    🙏

    en réponse à : Codes postaux en liaison sur deux casses #70375
    Merlin
    Maître des clés

    en réponse à : Saisie mode de passe #70349
    Merlin
    Maître des clés

    Bonjour

     

    Un dessin vaut mieux qu’un long discours :

    (attention quand même, la valeur d’un champ « mot de passe » n’est jamais exportée avec les autres données)

     

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Nombres aléatoires #70339
    Merlin
    Maître des clés

    👍

    en réponse à : Calcul date automatique j+1, j+2, j+3…. #70317
    Merlin
    Maître des clés

    « j’ai testé et cela fonctionne sur Adobe mais toujours pas sur notre logiciel. J’essaye de comprendre… »

    A priori la réponse est simple (et peu plaisante) : ce logiciel ne supporte pas toutes les fonctionnalités d’ECMAScript.

    Voir : https://www.abracadabrapdf.net/format_pdf/normes_iso_et_pdf/norme-iso-ecmascript-for-pdf/

    en réponse à : Script pour compter les champs restants à remplir #70316
    Merlin
    Maître des clés

    « C’est effectivement une méthode que je n’utilise pas, et ici elle ne convient pas ! »

    Oui, je n’avais pas fait attention aux cases. 😩

     

     

    « Quel script peut-on mettre dans l’onglet « Actions » du champ de texte pour afficher un pop up qui liste le contenu des infobulles des champs non complétés ? »

    Le plus simple, le plus ergonomique et le plus intuitif pour l’utilisateur final c’est de mettre un contour rouge aux champs obligatoires, contour qui devient transparent quand le champ est rempli. C’est très visuel, ça lui permet de voir l’avancement du remplissage au fur et à mesure et ça lui évite de chercher un intitulé (infobulle) obscur dans un document qui est farci d’intitulés de partout.

    Et ça évite au développeur de devoir gérer des listes, des noms et un champ supplémentaire à affichage variable.

     

    Pour faire ça dans chaque champ obligatoire je met un script en action « champ désactivé » qui vérifie si un « event » a eu lieu ou qui vérifie si le champ a été rempli, et qui change la couleur de contour en fonction du résultat.

    en réponse à : Script pour compter les champs restants à remplir #70287
    Merlin
    Maître des clés

    bebarth, tu crées des scripts astucieux qui m’épatent, mais là je crois que tu te casses la tête pour rien. 😉

    Pour savoir si un champ a été rempli ou coché il n’y a pas besoin de savoir ce qu’il contient ni de savoir de quel type il est, il suffit de comparer sa valeur active avec sa valeur par défaut.

    On peut donc simplifier le script ainsi :

     

    var nbChps=0;
    // Vérifie tous les champs du document
    for (var i=0; i<this.numFields; i++) {
    var f = this.getField(this.getNthFieldName(i));
    // si le champ est obligatoire ET si sa valeur est égale à sa valeur par défaut
    if (f.required==true && f.value == f.defaultValue) {nbChps++}
    }
    // Affichage du message
    if (nbChps!=0) {
    if (nbChps==1) app.alert("Un champ n'est pas rempli.",3);
    else app.alert(nbChps+ " champs ne sont pas remplis.",3);
    }

    en réponse à : Saisie de l’identité avec boite dialogue #70277
    Merlin
    Maître des clés

    Bonjour

     

    C’est le problème inverse de celui de l’autre jour, dans cette ligne :

    var results = dialog.store();

    la variable « results » est déclarée avec « var », ce qui en fait une variable locale (qui n’existe que dans et pour la fonction).

    Du coup le script qui s’exécute dans le bouton juste après la fonction n’a pas accès à cette variable et donc ne peut pas remplir le champ texte.

     

    Pour que le script du bouton puisse accéder à cette variable il faut la déclarer comme globale, et donc remplacer la ligne ci-dessus par :

    results = dialog.store();

     

     

    Par ailleurs il me semble qu’il y a un petit bug (humain) dans la boite de dialogue :

    😀

     

    Attachments:
    You must be logged in to view attached files.
15 réponses de 1 à 15 (sur un total de 9,619)