JMP rallenta dopo la chiusura con finestra di selezioneCiao,
Sto cercando di chiedere agli utenti di effettuare una selezione di gruppi da una finestra che si apre all'inizio di uno script che definisce un oggetto da utilizzare per il resto dello script. Quando l'utente seleziona e utilizza la casella dei pulsanti, funziona benissimo, ma se chiude con la finestra, JMP rallenta e diventa impossibile modificare la finestra dello script senza fare clic con il pulsante destro del mouse>Interrompi script. Qualcuno ha qualche idea su cosa manca qui?
Names Default to Here (1);
groupsel=Expr(
done = 0;//Track if selection made
nwcurr = New Window("Select Group",
V List Box(
Text Box("Please select a group:"),
rb = Radio Box({"A", "B", "C"}),
Button Box("OK",
// Set the selected currency based on the user's choice
group = rb << Get Selected;
nwcurr << Close Window; // Close the modal window after selection
done = 1; // Mark the selection as done
)
)
);
nwcurr << On Close(
Throw("No selection made. Script stopped."),Stop();
);
// Wait loop until the selection is made
Wait(0.1); // Small wait to reduce CPU usage
while(done == 0, Wait(0.1)); // Loop until 'done' is set to 1
);
Eval(groupsel);Automazione e scriptingRe: JMP rallenta dopo la chiusura con finestra di selezioneLa variabile "done" sarà sempre 0 se la finestra è appena chiusa, quindi rimarrai bloccato nel ciclo While.
Re: JMP rallenta dopo la chiusura con finestra di selezioneQuesto potrebbe essere un buon momento per usare una finestra Modal. Non avrai bisogno della variabile "done".
Names Default To Here( 1 );
groupsel = Expr(
nwcurr = New Window( "Select Group",
<<MODAL></MODAL>
Re: JMP rallenta dopo la chiusura con finestra di selezioneUn'altra opzione al di fuori dell'utilizzo della finestra modale è quella di spostare le azioni che si desidera eseguire nella propria funzione/espressione che verrà eseguita quando si preme OK.
Names Default To Here(1);
expr_actions = Expr(
group = rb << Get Selected;
show(group);
);
groupsel = Expr(
nwcurr = New Window("Select Group",
V List Box(
Text Box("Please select a group:"),
rb = Radio Box({"A", "B", "C"}),
Button Box("OK",
expr_actions;
nwcurr << Close Window;
)
)
);
);
Eval(groupsel);
La modalità modale è più semplice, ma a seconda del caso d'uso offrirà un'esperienza utente peggiore (almeno secondo me).
Re: JMP rallenta dopo la chiusura con finestra di selezioneUsa uno dei suggerimenti precedenti. Consulta Modal Dialogs per esempi che potrebbero aiutarti a scrivere una soluzione modale.
Alcuni dei comportamenti che vedi sono dovuti a questo codice:
nwcurr << On Close(
Throw("No selection made. Script stopped."),Stop();
);
L'espressione OnClose deve essere valutata come 0 o 1; 0 (false) significa che la finestra non dovrebbe essere autorizzata a chiudersi e 1 (true) significa consentire alla finestra di terminare la chiusura. Non sono sicuro di cosa accada con throw, ma probabilmente non qualcosa di buono; non viene restituito alcun valore. stop() non viene mai visto da JMP; sembra essere un parametro extra inutilizzato. Utilizzare un punto e virgola tra le istruzioni.