Ralentissement de JMP après fermeture avec fenêtre de sélectionBonjour,
J'essaie d'inciter les utilisateurs à faire une sélection de groupes à partir d'une fenêtre qui s'ouvre au début d'un script qui définit un objet à utiliser pour le reste du script. Lorsque l'utilisateur sélectionne et utilise la boîte à boutons, cela fonctionne très bien, mais s'il ferme avec la fenêtre, JMP ralentit et il devient impossible de modifier la fenêtre de script sans faire un clic droit > Arrêter le script. Quelqu'un a-t-il une idée de ce qui manque ici ?
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);Automatisation et scriptsRe: Ralentissement de JMP après fermeture avec fenêtre de sélectionVotre variable « done » sera toujours à 0, si la fenêtre vient d'être fermée, vous serez donc coincé dans la boucle While.
Re: Ralentissement de JMP après fermeture avec fenêtre de sélectionC'est peut-être le bon moment pour utiliser une fenêtre modale. Vous n'aurez pas besoin de la variable « done ».
Names Default To Here( 1 );
groupsel = Expr(
nwcurr = New Window( "Select Group",
<<MODAL></MODAL>
Re: Ralentissement de JMP après fermeture avec fenêtre de sélectionOu une autre option en dehors de l'utilisation de la fenêtre modale, consiste à déplacer les actions que vous souhaitez effectuer vers leur propre fonction/expression qui sera exécutée lorsque vous appuyez sur 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);
Le modal est plus simple, mais selon le cas d'utilisation, il offrira une expérience utilisateur moins bonne (du moins à mon avis).
Re: Ralentissement de JMP après fermeture avec fenêtre de sélectionUtilisez l'une des suggestions précédentes. Consultez les boîtes de dialogue modales pour obtenir des exemples qui pourraient vous aider à rédiger une solution modale.
Certains des comportements que vous voyez sont dus à ce code :
nwcurr << On Close(
Throw("No selection made. Script stopped."),Stop();
);
L'expression OnClose doit être évaluée à 0 ou 1 ; 0 (faux) signifie que la fenêtre ne doit pas être autorisée à se fermer et 1 (vrai) signifie qu'il faut autoriser la fenêtre à terminer sa fermeture. Je ne sais pas ce qui se passe avec le throw, mais probablement rien de bon ; aucune valeur n'est renvoyée. Le stop() n'est jamais vu par JMP ; il semble qu'il s'agisse d'un paramètre supplémentaire inutilisé. Utilisez un point-virgule entre les instructions.