Récupérer l'élément sélectionné dans une liste déroulante - changement de comportement en JSL ?Je suis en train de suivre cette superbe vidéo d'instruction sur la façon d'écrire un script JSL par @David_Burnham .
Jusqu'à 7 minutes et 28 secondes, tout fonctionne comme prévu. À partir d'environ 8 minutes et 13 secondes, précisément au moment où la fenêtre passe en mode modal, ce code génère une erreur :
// doesn't work:
lst = {"A", "B", "C"};
New Window("Select", << Modal,
Border Box(top(10), bottom(10), left(15), right(10),
V List Box(
TextBox("Select the predictor variable", <
<SETFONTSTYLE></SETFONTSTYLE>
<BR /> <P>Je pense avoir trouvé une solution : <A href="https://community.jmp.com/t5/Discussions/How-to-get-specific-input-values-from-modal-windows-to-be-placed/m-p/483379#U483379" class="lia-mention-container-editor-message lia-img-icon-forum-thread lia-fa-icon lia-fa-forum lia-fa-thread lia-fa" target="_blank">comment récupérer des valeurs saisies dans des fenêtres modales pour les enregistrer dans un script JMP ?</A> En tout cas, lorsque j’exécute le script ci-dessous et que je clique sur le bouton « OK » de la fenêtre modale, la commande <FONT face="courier new,courier" color="#0000FF">`sel`</FONT> renvoie une liste contenant les valeurs sélectionnées.</P> <P><U><STRONG>Scénario</STRONG></U>:</P> <BR />
<CODE class=" language-jsl">// works
NewWindow("Select", <
<MODAL>
<CODE class=" language-jsl"> <BR /> <P><U><STRONG>Exemple de sortie</STRONG></U>:</P> <CODE class=" language-jsl">sel = {"A", "B"};
{Button( 1 )} // what is this? Trois choses que j'aimerais comprendre:
- Y a-t-il un problème avec le code original que j'ai posté en haut (// ne fonctionne pas) ou le comportement de JSL a-t-il changé depuis l'enregistrement de la vidéo ?
- Je ne comprends pas la valeur de retour {Bouton( 1 )} . Pourquoi est-elle là ? Je suppose qu'elle provient de Boîte à boutons() , mais l'index du script n'est pas informatif.
- Suis-je sur la bonne voie avec le bouton personnalisé ?
Modifier:
La solution se trouve même dans la vidéo d'instructions.
lst = {"A", "B", "C"};
NewWindow("Select", <
<MODAL></MODAL>
Re: Récupérer l'élément sélectionné dans une liste déroulante - changement de comportement de JSL ?1. Une fois la fenêtre modale fermée, vous ne pouvez plus accéder aux valeurs, sauf si elles sont renvoyées lorsque << renvoie le résultat est utilisé.
2. Le bouton (1) signifie simplement que le bouton OK a été pressé et vous pouvez l'utiliser par exemple pour contrôler le flux de votre script.
3. Oui, récupérer les valeurs lorsque l'utilisateur appuie sur OK est une bonne option.
Je commence généralement par essayer avec << Retourner le résultat et, si cela ne fonctionne pas avec ma fenêtre actuelle, je récupère les valeurs lorsque l'utilisateur appuie sur le bouton OK. J'ajoute (presque) toujours les boutons OK et Annuler lorsque j'utilise une boîte de dialogue modale, même s'ils ne sont pas nécessaires (Guide de script > Arborescences d'affichage > Fenêtres modales en JSL > Créer une fenêtre modale) .
Ci-dessous un exemple utilisant << Retourner le résultat
Names Default To Here(1);
lst = {"A", "B", "C"};
nw = New Window("Modal Dialog example",
<
<TYPE></TYPE>
<P>Et le cas où cela ne fonctionnera pas comme vous le souhaiteriez (je veux les éléments ajoutés à la liste de sélection, et non les éléments sélectionnés).</P> <BR /> <BR /> <CODE class=" language-jsl">Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
nw = New Window("Modal Dialog example",
<
<TYPE></TYPE> <BR /> <BR />
Re: Récupérer l'élément sélectionné dans une liste déroulante - changement de comportement de JSL ?Merci beaucoup, comme toujours ! C’est toujours étrange que ce qui ne fonctionne pas ici fonctionne dans la vidéo dont le lien figure dans mon message initial.
Re: Récupérer l'élément sélectionné dans une liste déroulante - changement de comportement de JSL ?Cela pourrait être lié à une ancienne version de JMP et à certains problèmes de synchronisation.