Donnez vie à vos documents numériques !
 

yalec38

Toutes mes réponses sur les forums

Affichage de 6 réponses de 1 à 6 (sur un total de 6)
  • Auteur
    Réponses
  • yalec38
    Membre

    Bebarth,

    Je me suis permis de t’envoyer un message privé. En fait j’ai besoin du champ Zone de texte pour importer les données car l’utilisateur final doit pouvoir modifier ces données indirectement. Je t’explique cela de manière plus claire dans mon MP.

    Merci de ta patience  :Ooops:

    yalec38
    Membre

    Effectivement, tous les codes font le même nombre de caractères : 3 chiffres suivi d’une lettre.

    yalec38
    Membre

    Bebarth,

    J’ai essayé d’adapter le code dans le script “init” du formulaire que tu as créé pour ne pas avoir de pièce jointe au formulaire en me servant d’un champs “zone de texte” dans lequel j’ai copié les données du fichier PCS-ESE.txt.
    Je n’ai rien qui s’affiche dans le champs LISTE-PCS  :Ooops:

    Voici le code modifié :

    this.getField(“LISTE-PCS”).clearItems();
    var DONNEES=this.getField(“DONNEES”).value;
    var DONNEES=DONNEES.replace(/;/g, “”);
    var LIGNES=DONNEES.split(“r”);
    var COLONNES=new Array();
    for (var i=0; i.split(“t”));
    var TABLEAU=new Array() ;
    for (var j=0 ; jthis.getField(“LISTE-PCS”).setItems(TABLEAU); // champ liste déroulante
    this.getField(“LISTE-PCS”).setFocus();
    this.getField(“CODE-PCS1”).value=this.getField(“LISTE-PCS”).getItemAt(0,false);
    this.getField(“LIB-PCS1”).value=this.getField(“LISTE-PCS”).getItemAt(0,true);
    this.getField(“CODE-PCS2″).value=””;
    this.getField(“LIB-PCS2″).value=””;

    Y’a t’il un moyen de déboguer le code en pas-à-pas (de façon à voir le contenu des variables et si oui, comment faire ?
    A quoi correspond la commande .push ?
    Comment afficher dans le champs “LISTE-PCS” le code PCS et le libellé séparés d’une tabulation ?

    Je suis désolé de revenir sur le sujet mais je suis vraiment une quiche en javascript alors que je me débrouille en peu mieux en VB.Net

    yalec38
    Membre

    Merci bebarth

    Il va falloir que je décortique ton code avec autre chose que l’éditeur d’Acrobat X. En tous cas sur ton fichier joint ça à l’air de fonctionner parfaitement et de correspondre à ce que je voulais.

    La prochaine étape va être de pouvoir filtrer la liste en fonction du premier chiffre du code PCS (1, 2, 3, 4, 5 ou 6) et éventuellement de pouvoir faire une recherche par mot clé.

    Est-ce que l’équivalent de string.StartsWith(“1”) existe en javascript ?

    Et est-ce que l’équivalent de string.Contains(“chaine”) existe aussi ?

    Merci en tous cas pour vos réponses qui vont m’aider à avancer sur ce projet.

    yalec38
    Membre

    Merci Merlin.

    J’avais mis ça dans l’onglet “Changement de sélection” :

    this.getField(“CODE-PCS1”).value = event.value.substring(0,4)
    this.getField(“LIB-PCS1”).value = event.value.substring(5)

    Et ça fonctionne pour remplir les zones de texte mais je voudrai que la validation soit faite par un double click sur la ligne sélectionnée de la zone de liste.

    Cependant le fonctionnement des zones de liste sous Acrobat ne me convient pas (l’ascenseur n’est pas visible systématiquement et le défilement est trop lent). Il va falloir que je fasse une usine à gaz avec des zones de texte et deux boutons de déplacement.

    yalec38
    Membre

    Il s’agit bien d’une zone de liste (l’option “sélection multiple” n’a pas été activée). J’importe donc lors de l’activation de la première zone de texte les données de la pièce jointe dans la zone de liste avec le code suivant :

    this.getField(“LISTE-PCS”).clearItems();
    var PJOINTE = this.getDataObject(this.dataObjects[0].name)
    var fi = this.getDataObjectContents(PJOINTE.name)
    var fit = util.stringFromStream(fi)
    var LIGNES = fit.split(“n”);
    var COLONNES = new Array();
    for (var i = 0 ; i < LIGNES.length ; i++) {COLONNES = LIGNES.split(“;”)}
    var TABLEAU = new Array() ;
    for (var j = 0 ; j < COLONNES.length ; j++) { TABLEAU[j] = [COLONNES[j][0], j] ;}
    this.getField(“LISTE-PCS”).setItems(TABLEAU); // champ liste déroulante
    [this.getField(“LISTE-PCS”).setFocus();

    Je voudrais que lorsque l’utilisateur sélectionne une ligne dans la zone de liste (par clic), que son contenu soit scindé en deux parties et s’inscrive dans deux zones de texte.

    Chaque ligne du fichier .txt est constituée d’une chaine de 4 caractères (3 chiffres et 1 lettre) suivie d’une tabulation puis d’une chaine de caractères de longueur variable et terminée par un “;”.

    Je ne sais pas comment récupérer dans une variable la valeur de la ligne sélectionnée dans la zone de liste pour pouvoir la scinder en deux et inscrire chaque partie dans la zone de texte correspondante.

    En VB.net j’aurai ajouté sur une procédure “OnClick” de la zone de liste le code suivant :

    Dim Code as String = SubString(LISTE-PCS.SelectedValue, 0, 3)
    Dim Libelle as String = SubString(LISTE-PCS.SelectedValue, 5, LISTE-PCS.SelectedValue.Lenght – 5)
    CODE-PCS.Value = Code
    LIB-PCS.Value = Libelle

    Avec LISTE-PCS le nom de la zone de liste, CODE-PCS le nom de la première zone de texte et LIB-PCS le nom de la deuxième.

    Malheureusement, je ne maitrise pas du tout le JavaScript. :Smiley02:

Affichage de 6 réponses de 1 à 6 (sur un total de 6)