Kann ein Bericht geschlossen werden, wenn die Tabelle geschlossen wird?Möchten Sie wissen, ob es eine Methode zum automatischen Schließen eines Fensters mit einem Bericht gibt, wenn die Datentabelle geschlossen wird, insbesondere mit der Meldung "<< On Close"? Zum Beispiel erstelle ich eine Verteilung aus einer Datentabelle und füge die Ergebnisse zusammen mit einigen anderen wichtigen Informationen einem Fenster hinzu. Wenn der Benutzer die Datentabelle schließt, möchte ich einige Aktionen im Fenster ausführen. Folgendes demonstriert:
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
VLB = VlistBox(
Distribution(Column(:Age, :Weight));
);
win = New Window("Results",
TextBox("Other things"),
VLB
);
dt << On Close(
Show("Close script activated"); //this line is executed...
VLB << Delete Box(); //...but not this one or any following it.
Show("Remainder of script is not run...");
);
Die Verwendung der Nachricht "<< On Close" scheint die Antwort zu sein, aber ich kann sie noch nicht zum Laufen bringen. Wenn ich die Tabelle dt schließe, wird die erste Zeile des On-Close-Skripts ausgeführt, aber nicht der Rest. Ich erhalte eine Meldung, die angibt, dass andere Berichtsfenster geöffnet sind und ob ich sie schließen möchte (durch Klicken auf „Alle schließen“ wird das gesamte Ergebnisfenster geschlossen, nicht nur die Verteilung), und schließlich eine Meldung, die zum Speichern auffordert („Nein“). Mein Verdacht ist, dass beim Klicken auf das "X" zum Schließen der Tabelle mein Verweis auf VLB gelöscht wird, bevor das On-Close-Skript ausgeführt werden kann.
Mir ist klar, dass ich einen Bericht über die Verteilung erstellen und diesen stattdessen in mein Fenster einfügen könnte, aber dann wäre er statisch, was ich nicht möchte.
Irgendwelche Gedanken?
Betreff: Kann ein Bericht geschlossen werden, wenn die Tabelle geschlossen wird?Danke Leute. Leider denke ich, dass ich Names Default to Here(1) verwenden muss, da dieses Skript von anderen verwendet wird, aber dieser Sol könnte für andere nützlich sein.
Ich konnte es mit dem NDtH-Befehl zum Laufen bringen, indem ich meine VLB-Referenz zu einer globalen machte. Das ist noch nicht ideal, bietet aber einige Möglichkeiten.
Names Default to Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
::VLB = VlistBox(
Distribution(Column(:Age, :Weight));
);
win = New Window("Results",
TextBox("Other things"),
::VLB
);
dt << On Close(
Show("Close script activated");
::VLB << Delete Box();
Show("Remainder of script...");
);Wenn es jedoch eine Möglichkeit gibt, die Abonnieren-Funktion zum Laufen zu bringen, würde ich das lieben. Es gibt andere Aktionen, die ich in meinem Fenster ausführen möchte, wenn Änderungen an der Tabelle vorgenommen werden. Danke noch einmal.
Betreff: Kann ein Bericht geschlossen werden, wenn die Tabelle geschlossen wird?Danke Audrey! Guter Fang auch, ja, ich habe es weggelassen. Es ist wahrscheinlich sinnvoll, dass vlb für das Skripteditorfenster lokal ist und nicht verfügbar ist, wenn das Fenster der Datentabelle onClose ausführt. Ich denke, eine Anforderung besteht darin, im Protokollfenster eine Nachricht darüber zu erhalten, dass vlb im Kontext der Tabelle nicht definiert ist.
Betreff: Kann ein Bericht geschlossen werden, wenn die Tabelle geschlossen wird?@nikles Zunächst einmal vielen Dank für ein so großartiges Skript, um das Problem / die Frage zu replizieren. Es ist sehr einfach zu sehen, was Sie fragen.
Zweitens muss ich zugeben, dass ich beim ersten Kopieren Ihres Skripts zum Ausprobieren die erste Zeile Names Default nicht nach Here(1) kopiert habe. Es stellt sich heraus, dass das Weglassen dieser Zeile dazu führt, dass Ihr Skript so funktioniert, wie Sie es möchten. Dies könnte eine Problemumgehung sein, wenn Sie diese Zeile nicht benötigen, um den Bereich Ihrer Variablen einzuschränken. (Hinweis: Es ist sicherlich eine bewährte Methode, Namen standardmäßig auf here () zu verwenden, aber hier führt dies zu einer Art Scoping-Problem.)
Drittens fand ich das Verhalten auf Mac und Windows konsistent. (So, @Craige_Hales , hast du zufällig auch Names Default to Here(1) ausgelassen?)
Viertens schlug Craige vor, dass dt << Subscribe eine Möglichkeit sein könnte, aber ich konnte es nicht zum Laufen bringen, mit oder ohne Names Default to Here(1); Ich sehe weiterhin die Meldung, dass andere Berichtsfenster geöffnet sind, und möchte ich sie schließen.
Schließlich halte ich Rücksprache mit unserem Entwicklungsteam und schaue, ob dies etwas ist, das angegangen werden sollte.
Betreff: Kann ein Bericht geschlossen werden, wenn die Tabelle geschlossen wird?Ok - Nachricht an den technischen Support gesendet, also gibt es hoffentlich eine Problemumgehung. Mir war die "Abonnieren"-Funktion nicht bekannt, also danke, dass du das geteilt hast. Leider funktioniert das auf meinem System auch nicht, wahrscheinlich aus demselben Grund. Selbst das Ausführen von „Example 1“ im Scripting-Indexeintrag für „Subscribe“ schlägt fehl. Ich kann mir viele frühere Skripte vorstellen, bei denen die Verwendung hilfreich gewesen wäre.
Betreff: Kann ein Bericht geschlossen werden, wenn die Tabelle geschlossen wird?@Audrey_Shull
Möglicherweise müssen Sie den technischen Support durchlaufen. Wahrscheinlich ein Unterschied in der Reihenfolge, in der die Dinge auf den beiden Betriebssystemen passieren.
https://www.jmp.com/support/help/14-2/subscribe-to-a-data-table.shtml könnte eine ausreichend unterschiedliche Variation von onClose bereitstellen, damit es funktioniert; Ich denke, dt<
Ich habe report<Betreff: Kann ein Bericht geschlossen werden, wenn die Tabelle geschlossen wird?
Hmm. Läuft auf einem Mac (Mojave 10.14.6) mit JMP Pro 14.3.0.
Betreff: Kann ein Bericht geschlossen werden, wenn die Tabelle geschlossen wird?Ich denke, Ihr Skript ist korrekt und es läuft unter Windows in 14.3; Welche Version von JMP verwendest du?
The platform left the windowDie Plattform verließ das Fenster