Toutes mes réponses sur les forums
-
AuteurRéponses
-
20 novembre 2020 à 11:34 en réponse à : Remplir zones de texte à partir de la ligne sélectionnée dans une zone de liste #68325
yalec38
MembreBebarth,
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:
20 novembre 2020 à 08:29 en réponse à : Remplir zones de texte à partir de la ligne sélectionnée dans une zone de liste #68323yalec38
MembreEffectivement, tous les codes font le même nombre de caractères : 3 chiffres suivi d’une lettre.
19 novembre 2020 à 17:21 en réponse à : Remplir zones de texte à partir de la ligne sélectionnée dans une zone de liste #68321yalec38
MembreBebarth,
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
16 novembre 2020 à 18:14 en réponse à : Remplir zones de texte à partir de la ligne sélectionnée dans une zone de liste #68318yalec38
MembreMerci 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.
15 novembre 2020 à 16:21 en réponse à : Remplir zones de texte à partir de la ligne sélectionnée dans une zone de liste #68314yalec38
MembreMerci 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.
15 novembre 2020 à 08:28 en réponse à : Remplir zones de texte à partir de la ligne sélectionnée dans une zone de liste #68312yalec38
MembreIl 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 = LibelleAvec 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:
-
AuteurRéponses