Aktualisieren von Windows und Fensterpersistenz<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Hallo. Ich habe einen Ausdruck, der zuerst ein modales Benachrichtigungsfenster erstellt und nach dem Klicken auf OK ein zweites Bearbeitungsfenster erstellt. Im Bearbeitungsfenster gibt es eine Schaltfläche Aktualisieren, mit der das Fenster geschlossen und der ursprüngliche Ausdruck erneut ausgeführt wird. Wenn ich auf "Aktualisieren" klicke, wird das Bearbeitungsfenster wie erwartet geschlossen und das modale Benachrichtigungsfenster wird erneut angezeigt. Die zweite Iteration des Bearbeitungsfensters wird jedoch mit einer an den Namen angehängten "2" angezeigt ("editwin 2"), obwohl der ursprüngliche editwin bereits geschlossen wurde. Darüber hinaus wird das Skript << On Close, das beim erstmaligen Schließen des Bearbeitungsfensters sofort ausgeführt werden soll, erst ausgeführt, nachdem die zweite Instanz des Benachrichtigungsfensters geschlossen und die zweite Instanz des Bearbeitungsfensters geöffnet wird. Obwohl das Bearbeitungsfenster geschlossen ist, bleibt es scheinbar im Speicher, bis die nächste Instanz des Bearbeitungsfensters angezeigt wird.
Hat jemand eine gute Erklärung für dieses Verhalten, und was noch wichtiger ist, was ist der Workaround?
Vielen Dank.
Namensvorgabe bis hier (1);
Symbole löschen ();
editwin.expr = Ausdruck (
BB1 = ButtonBox ("ok",
Fenster ("editwin") << Fenster schließen;
);
BB2 = ButtonBox ("Refresh"),
Fenster ("editwin") << Fenster schließen;
editwin.expr;
);
modwin = Neues Fenster ("modwin", << Modal,
TextBox ("Ich bin ein Benachrichtigungsfenster"),
ButtonBox ("OK", Write ("Schließen von modwin \! N"))
);
editwin = Neues Fenster ("editwin",
TextBox ("Ich bin ein Bearbeitungsfenster"),
BB1, BB2
);
editwin << On Close (Write ("Schließen editwin \! N")));
editwin << Set Window Size (300, 200);
);
editwin.expr;
Betreff: Aktualisierung der Persistenz von Windows und FensternBieten Sie einfach diesen Code an, falls Sie einen anderen Ansatz für das Problem haben, das Sie lösen möchten
Namensvorgabe bis hier ( 1 ) ;
Bearbeiten Sie das Fenster = Funktion ({} . { Default Local } .
nwEdit = Neues Fenster ( "editwin" . << Modal .
Textfeld ( "Ich bin ein Bearbeitungsfenster" ) .
ButtonBox ( "OK" ) .
) ;
Ob ( nwEdit [ "Taste" ] == - 1 .
Retalwert = 1
.
Retalwert = 0
) ;
Retalwert
) ;
nw = Neues Fenster ( "modwin" . << Modal .
<< On Validate (
Bearbeiten Sie das Fenster ()
) .
Textfeld ( "Ich bin ein Benachrichtigungsfenster" ) .
ButtonBox ( "OK" . Schreiben ( "Schließen von modwin \! N" ) ; )
) ;
Betreff: Aktualisierung der Persistenz von Windows und FensternSie sind richtig, meine Arbeit um das Fenster Nwaming-Problem nicht cix, aber es entfernt die Abhängigkeit vom Fensternamen. jJMLP Jmp übergibt das Schließen von Fenstern an das Betriebssystem und verliert daher die absolute Kontrolle darüber, wann das Fenster tatsächlich geschlossen wird
Betreff: Aktualisierung der Persistenz von Windows und FensternInteressant. Ich verwende JMP 11.1.1 für Windows (64-Bit). Ich bin noch nicht bereit, das Problem als 11-gegen-12-Problem oder Mac-gegen-Windows-Problem zu verwerfen. Auf jeden Fall muss ich immer noch einen Workaround für meine aktuelle Konfiguration finden.
Betreff: Aktualisierung der Persistenz von Windows und FensternLeider verhindert Ihr Skript nicht das Umbenennen des Fensters. Ich habe versucht, genau dasselbe Verhalten zu erreichen.
Betreff: Aktualisierung der Persistenz von Windows und FensternZu Ihrer Information, ich habe das Skript in JMP 12 für Mac ausprobiert und dieses Problem nicht gesehen. editwin wurde jedes Mal als editwin bezeichnet, es erfolgte keine automatische Nummerierung.
In JMP 12 für Windows konnte ich das Problem jedoch reproduzieren: editwin 2, editwin 3 usw. werden nach jeder Aktualisierung generiert. Keine Ahnung warum.
Der Txnelson-Ansatz bietet eine gute Lösung
Betreff: Aktualisierung der Persistenz von Windows und FensternIch konnte das Problem mit der Fensternennung nicht lösen. Es scheint, dass JMP den Namen für die Dauer der Ausführung eines bestimmten EXPR in Reserve hält. Der nachstehende Code beseitigt jedoch die Bedenken hinsichtlich des Fensternamens, indem alle Aktionen am Fenstergriff des Fensters und nicht der Name des Fensters ausgeführt werden:
Namensvorgabe bis hier (1);
Symbole löschen ();
editwin.expr = Ausdruck (
BB1 = ButtonBox ("ok",
editwinx << Fenster schließen;
);
BB2 = ButtonBox ("Refresh"),
editwinx << Fenster schließen;
editwin.expr;
);
modwin = Neues Fenster ("modwin", << Modal,
TextBox ("Ich bin ein Benachrichtigungsfenster"),
ButtonBox ("OK", Write ("Schließen modwin \! N"));
);
editwinx = Neues Fenster ("editwin",
TextBox ("Ich bin ein Bearbeitungsfenster"),
BB1, BB2
);
editwinx << On Close (Write ("Schließen editwinx \! N")));
editwinx << Set Window Size (300, 200);
);
editwin.expr;