abracadabraPDF › Forums › PDF – Général › Permuter des champs
- Ce sujet contient 11 réponses, 2 participants et a été mis à jour pour la dernière fois par
michel c., le il y a 2 années et 6 mois.
- CréateurSujet
- 4 novembre 2022 à 08:20 #71767
michel c.
ParticipantBonjour, je souhaiterais savoir si il est possible de permuter des champs (pas le contenu des champs mais les champs eux même).
Par exemple, dans le fichier joint (qui est un plan de salle), je souhaiterais :
• que les listes déroulantes aient comme entrées de liste les valeurs saisies dans les champs (goto.1 à goto.32)
• qu’en cliquant sur le bouton, les places qu’occupent les champs des 2 élèves sélectionnés permutent.
Je ne sais pas encore comment m’y prendre avec les listes déroulantes pour qu’elles aient comme entrées de liste les valeurs saisies dans les champs (goto.1 à goto.32)
Je suppose que c’est en utilisant la fonction setItems
Merci
Attachments:
You must be logged in to view attached files. - CréateurSujet
- AuteurRéponses
- 4 novembre 2022 à 08:51 #71769
bebarth
Maître des clésbonjour,
Il suffit de permuter la propriété « rect » des 2 champs :
var temp=this.getField("Ch1").rect;
this.getField("Ch1").rect=this.getField("Ch2").rect;
this.getField("Ch2").rect=temp;
@+
😎Attachments:
You must be logged in to view attached files.6 novembre 2022 à 16:15 #71778michel c.
ParticipantMerci pour la proposition.
En fait, ce n’est pas les Champs Ch1 et Ch2 que je souhaite permuter mais goto.a et goto.b (les valeurs a et b dépendent des choix faits dans les champs Ch1 et Ch2).
J’aimerais donc propulser les noms des élèves inscrits dans les champs goto.1 à goto.32 dans les listes Ch1 et Ch2 et avec pour valeur d’export les noms de champs (goto.1 à goto.32). → ça je ne sais pas faire, mais je vais continuer à chercher.
Ensuite une fois les noms d’élèves à permuter sélectionnés, j’aimerais qu’en cliquant sur le bouton central, les champs goto.a et goto.b correspondant à ces élèves permutent (changent de place).
Je viens de faire un essai non concluant, mais je vais continuer à tâtonner, je vais peut être y arriver.
Merci
- Cette réponse a été modifiée le il y a 2 années et 6 mois par
michel c..
6 novembre 2022 à 17:41 #71783michel c.
Participant6 novembre 2022 à 18:06 #71787bebarth
Maître des clésbonjour,
Si tu ne t’y connais pas trop en expression régulière, il vaut mieux écrire :
var laListe=this.getField("liste00").value.split("\r");
this.getField("Ch1").setItems(laListe);
this.getField("Ch2").setItems(laListe);
Ensuite, je ne comprends pas trop ce que tu veux faire vu que les 2 listes sont identiques !
Admettons que tu ais « élève 3 » dans le premier menu et « élève 5 » dans le deuxième, que veux-tu faire ???@+
😎7 novembre 2022 à 09:11 #71795michel c.
ParticipantLes menus servent à sélectionner les élèves que je souhaite permuter.
La disposition des champs goto.1 à goto.32 est un plan de salle de classe.
Donc si je sélectionne l’élève 1 dans la liste de gauche et l’élève 9 dans la liste de droite, et qu’ensuite je clique sur le bouton central, le champ goto.1 se retrouvera à l’emplacement du champ goto.9 et inversement.
7 novembre 2022 à 10:07 #71796bebarth
Maître des clésbonjour,
Voici un script qui devrait répondre à ta question :
function eleve(nomChamp) {
var eleve=this.getField(nomChamp).value;
n=eleve.indexOf(" ");
return eleve.substr(n+1);
}
eleveCh1=eleve("Ch1");
eleveCh2=eleve("Ch2");
var temp=this.getField("goto."+eleveCh1).rect;
this.getField("goto."+eleveCh1).rect=this.getField("goto."+eleveCh2).rect;
this.getField("goto."+eleveCh2).rect=temp;
@+
😎Attachments:
You must be logged in to view attached files.7 novembre 2022 à 10:55 #71801michel c.
ParticipantMerci, cela fonctionne. Par contre si je modifie les noms des élèves (les entrées saisies dans les champs goto.nn), cela ne fonctionne plus pour ces champs.
- Cette réponse a été modifiée le il y a 2 années et 6 mois par
michel c..
- Cette réponse a été modifiée le il y a 2 années et 6 mois par
michel c..
Attachments:
You must be logged in to view attached files.7 novembre 2022 à 16:40 #71808bebarth
Maître des clés…effectivement, je n’avais pas pensé à ça !!!
Il faut donc regarder la position des menus déroulants, mais ici on ne ragarde uniquement que la position cela présume que la position des noms dans les champs « goto.1 », etc est identique à celle des menus déroulants, sinon il faudrait comparer les valeurs (menu et champs texte)
var temp=this.getField("goto."+(this.getField("Ch1").currentValueIndices+1)).rect;
this.getField("goto."+(this.getField("Ch1").currentValueIndices+1)).rect=this.getField("goto."+(this.getField("Ch2").currentValueIndices+1)).rect;
this.getField("goto."+(this.getField("Ch2").currentValueIndices+1)).rect=temp;
J’ai réduit le script au minimum. Demande si tu ne comprends pas !
@+
😎Attachments:
You must be logged in to view attached files.7 novembre 2022 à 20:09 #71817michel c.
ParticipantMerci beaucoup !
Je ne comprends pas trop quelles informations il y a dans rect. A ce que je crois comprendre et après avoir lu deux trois trucs sur le net, c’est les coordonnées des 4 coins du champ en question?
Autre truc que je crois avoir compris : currentValueIndices c’est la position des entrées dans le menu déroulant et on ajoute 1 car la numérotation commence à zero ?
Dernière question : est il possible de se passer du bouton servant à générer les menus déroulants ? J’ai essayé en plaçant ce script en script de calcul pour chacun des champs Ch1 et Ch2 ça à l’air de marcher. La méthode est bonne ou y a-t-il mieux à faire ?
Edit : Non en fait ça ne fonctionne pas, ça à l’air de fonctionner en mouse down par contre.
- Cette réponse a été modifiée le il y a 2 années et 6 mois par
michel c..
- Cette réponse a été modifiée le il y a 2 années et 6 mois par
michel c..
- Cette réponse a été modifiée le il y a 2 années et 6 mois par
michel c..
- Cette réponse a été modifiée le il y a 2 années et 6 mois par
michel c..
- Cette réponse a été modifiée le il y a 2 années et 6 mois par
michel c..
- Cette réponse a été modifiée le il y a 2 années et 6 mois par
michel c..
- Cette réponse a été modifiée le il y a 2 années et 6 mois par
michel c..
- Cette réponse a été modifiée le il y a 2 années et 6 mois par
michel c..
Attachments:
You must be logged in to view attached files.7 novembre 2022 à 21:02 #71829bebarth
Maître des clésJe ne comprends pas trop quelles informations il y a dans rect. A ce que je crois comprendre et après avoir lu deux trois trucs sur le net, c’est les coordonnées des 4 coins du champ en question?
https://opensource.adobe.com/dc-acrobat-sdk-docs/library/jsapiref/JS_API_AcroJS.html#id602
Autre truc que je crois avoir compris : currentValueIndices c’est la position des entrées dans le menu déroulant et on ajoute 1 car la numérotation commence à zero ?
Exact ! Si tes champs goto avaient commencé à 0 il n’y aurait pas eu besoin d’ajouter +1.
Dernière question : est il possible de se passer du bouton servant à générer les menus déroulants ? J’ai essayé en plaçant ce script en script de calcul pour chacun des champs Ch1 et Ch2 ça à l’air de marcher. La méthode est bonne ou y a-t-il mieux à faire ?
On peut mettre un script d’action en souris entrée… Le même pour les 2 menus déroulants.
var laListe=this.getField("liste00").value.split("\r");
event.target.setItems(laListe);
@+
😎Attachments:
You must be logged in to view attached files.9 novembre 2022 à 13:55 #71846michel c.
ParticipantMerci beaucoup, ça fonctionne nickel
- Cette réponse a été modifiée le il y a 2 années et 6 mois par
- AuteurRéponses
- Vous devez être connecté pour répondre à ce sujet.