Ottenere l'elemento selezionato da una casella di riepilogo: comportamento modificato di JSL?Attualmente sto guardando questo fantastico video tutorial su come scrivere uno script JSL, realizzato da @David_Burnham .
Fino a 7 minuti e 28 secondi tutto funziona come previsto. A partire da circa 8 minuti e 13 secondi, precisamente quando la finestra viene convertita in una finestra modale, questo codice genera un errore:
// 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>Credo di aver trovato una soluzione qui: <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">Come ottenere valori di input specifici da finestre modali da inserire in uno script JMP per salvarli.</A> Almeno, quando eseguo lo script qui sotto e premo il pulsante "OK" della finestra modale, <FONT face="courier new,courier" color="#0000FF">sel</FONT> restituisce un elenco con i valori selezionati.</P> <P><U><STRONG>Sceneggiatura</STRONG></U>:</P> <BR />
<CODE class=" language-jsl">// works
NewWindow("Select", <
<MODAL>
<CODE class=" language-jsl"> <BR /> <P><U><STRONG>Output di esempio</STRONG></U>:</P> <CODE class=" language-jsl">sel = {"A", "B"};
{Button( 1 )} // what is this? Tre cose che vorrei capire:
- C'è qualcosa che non va nel codice originale che ho pubblicato all'inizio (// non funziona) oppure il comportamento di JSL è cambiato da quando è stato registrato il video?
- Il valore di ritorno {Pulsante( 1 )} , non lo capisco. Perché è lì? Suppongo che provenga da Button Box() ma l'indice degli script non è informativo.
- Sono sulla strada giusta con il pulsante personalizzato?
Modificare:
La soluzione è addirittura presente nel video tutorial.
lst = {"A", "B", "C"};
NewWindow("Select", <
<MODAL></MODAL>
Oggetto: Ottenere l'elemento selezionato da una casella di riepilogo - comportamento modificato di JSL?1. Dopo la chiusura della finestra modale, non è più possibile accedere ai valori a meno che non vengano restituiti quando si utilizza << return result.
2. Il pulsante (1) indica semplicemente che è stato premuto OK e puoi usarlo, ad esempio, per controllare il flusso del tuo script.
3. Sì, ottenere i valori quando si preme OK è una buona opzione.
Di solito provo prima con << Return Result e se non funziona con la mia finestra corrente, allora ottengo i valori quando viene premuto il pulsante OK. Aggiungo (quasi) sempre i pulsanti OK e Annulla quando si utilizza una finestra di dialogo modale, anche se non sono necessari. Guida allo scripting > Alberi di visualizzazione > Finestre modali in JSL > Costruisci una finestra modale .
Di seguito è riportato un esempio che utilizza << Restituisci risultato
Names Default To Here(1);
lst = {"A", "B", "C"};
nw = New Window("Modal Dialog example",
<
<TYPE></TYPE>
<P>E nel caso in cui non funzioni come vorresti (vorrei gli elementi aggiunti alla casella di raccolta, non gli elementi selezionati)</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 />
Oggetto: Ottenere l'elemento selezionato da una casella di riepilogo - comportamento modificato di JSL?Grazie, come sempre, molto apprezzato! Rimane comunque un mistero il fatto che ciò che qui non funziona, nel video linkato nel mio post originale funzioni invece.
Oggetto: Ottenere l'elemento selezionato da una casella di riepilogo - comportamento modificato di JSL?Potrebbe essere correlato a una versione precedente di JMP e ad alcuni problemi di temporizzazione.