Comment détecter si une boîte de sous-titrage a été fermée ?Salut!
J'ai un script qui parcourt les cellules des données et effectue un traitement de données.
Pour donner à l'utilisateur une idée de la cellule qu'il traite actuellement, j'ajoute cette ligne :
Caption("Processing "||Char(i)||" out of "||Char(Nrows(dtmed))||" Cells...");Quoi qu'il en soit, si je ferme la légende, le script passe simplement à l'itération suivante. Ce que je veux, c'est que le script se termine si l'utilisateur ferme la boîte de légende. Peut-être y a-t-il une fonction qui me donnera le statut de la boîte de sous-titres si elle était fermée ?
Quoi qu'il en soit, le dernier recours est ce fil:
https://community.jmp.com/t5/Discussions/Jsl-How-can-i-stop-a-script-with-a-button/td-p/6787
Bien que j'appréhende d'avoir deux fenêtres (une boîte de légende et une boîte de fenêtre) juste pour avoir un bouton d'échappement.
Merci pour l'aide.
Re : Comment détecter si une boîte de sous-titres a été fermée ?Vous pouvez envisager d'utiliser 'OnClose()' pour faire le ménage tant que vous gardez une trace des tables :
NamesDefaultToHere(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
nw = NewWindow("Using 'On Close'", << onClose(onCloseBlock), TextBox("Close Me"));
onCloseBlock =
Expr(
Print("Closing table "||(dt << getName));
Close(dt, NoSave);
);Re : Comment détecter si une boîte de sous-titres a été fermée ?@ian_jmp
Je l'ai fait comme ça :
CheckBlock=Expr (
stattb<<SETTEXT></SETTEXT>D'une manière ou d'une autre, le bouton Annuler ne fait pas son travail, je pense que je l'ai mal placé dans le script.
Hm, malheureusement, l'abandon anormal par le bouton (X) laisse beaucoup de tables de données invisibles.
Toujours en train de vérifier comment y faire face.
Merci pour l'aide.
Re : Comment détecter si une boîte de sous-titres a été fermée ?Merci! Permettez-moi de vérifier comment je peux adapter cela à mon script actuel.
Re : Comment détecter si une boîte de sous-titres a été fermée ?On dirait que vous ne pouvez pas envoyer de messages à 'Caption()' pour le manipuler.
En adaptant ce qui se trouve dans l'autre fil, vous pouvez essayer quelque chose comme :
NamesDefaultToHere(1);
nw = NewWindow("Stop script",
tb = TextBox("Press 'Run'... \!n"),
bb1 = ButtonBox("Run", runScript),
bb2 = ButtonBox("Cancel", stopFlag = 1),
);
nw << setWindowSize(150, 120);
runScript =
Expr(
bb1 << enable(0);
stopFlag = 0;
for(i=1,i<=100, i++,
Wait(1);
if(stopFlag,
// Stop . . .
nw << closeWindow;
Print("Stopped after "||Char(i)||" seconds.");
Stop(),
// Else update display . . .
tb << setText("Counted for "||Char(i)||" seconds.")
);
);
nw <<CLOSEWINDOW></CLOSEWINDOW>