Wie erkennt man, ob ein Beschriftungsfeld geschlossen wurde?Hi!
Ich habe ein Skript, das die Zellen der Daten durchläuft und einige Daten verarbeitet.
Um dem Benutzer eine Vorstellung davon zu geben, welche Zelle gerade verarbeitet wird, füge ich diese Zeile hinzu:
Caption("Processing "||Char(i)||" out of "||Char(Nrows(dtmed))||" Cells...");Wie auch immer, wenn ich die Beschriftung schließe, fährt das Skript einfach mit der nächsten Iteration fort. Was ich möchte, ist, dass das Skript beendet wird, wenn der Benutzer das Beschriftungsfeld schließt. Vielleicht gibt es eine Funktion, die mir den Status des Untertitelfelds anzeigt, wenn es geschlossen wäre?
Wie auch immer, letzter Ausweg ist dieser Thread:
https://community.jmp.com/t5/Discussions/Jsl-How-can-i-stop-a-script-with-a-button/td-p/6787
Obwohl ich befürchte, zwei Fenster (ein Beschriftungsfeld und ein Fensterfeld) zu haben, nur um eine Escape-Taste zu haben.
Danke für die Hilfe.
Betreff: Wie erkennt man, ob ein Beschriftungsfeld geschlossen wurde?Sie könnten erwägen, 'OnClose()' zu verwenden, um den Haushalt zu führen, solange Sie die Tabellen im Auge behalten:
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);
);Betreff: Wie erkennt man, ob ein Beschriftungsfeld geschlossen wurde?@ian_jmp
Ich habe es so gemacht:
CheckBlock=Expr (
stattb<<SETTEXT></SETTEXT>Irgendwie macht die Abbrechen-Schaltfläche ihre Arbeit nicht, ich glaube, ich habe sie falsch im Skript platziert.
Hm, leider hinterlässt ein abnormaler Abbruch durch die (X)-Taste viele unsichtbare Datentabellen.
Prüfe noch, wie man damit umgeht.
Danke für die Hilfe.
Betreff: Wie erkennt man, ob ein Beschriftungsfeld geschlossen wurde?Vielen Dank! Lassen Sie mich prüfen, wie ich dies an mein aktuelles Skript anpassen kann.
Betreff: Wie erkennt man, ob ein Beschriftungsfeld geschlossen wurde?Sieht so aus, als könnten Sie keine Nachrichten an 'Caption()' senden, um es zu manipulieren.
Wenn Sie anpassen, was im anderen Thread steht, könnten Sie Folgendes versuchen:
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>