Erstellen Sie ein neues window() exakt in seinem exakten Zustand neu<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ich erstelle ein dynamisches neues Fenster () mit einer x-Anzahl an Registerkarten und Diagrammen (andere Dinge).Gibt es etwas wie Eval(dt << Get Script), das das Fenster exakt neu erstellt?Alle Tastenfunktionen bleiben vollständig erhalten und ich weiß, wo ich mich effektiv befinde.
Wenn ich es jetzt mache, kann ich es nicht einmal mit dem eval(nw<
Bearbeiten* Nur um es klarzustellen.Ich versuche, ein Fenster nachzubilden, ohne genau zu wissen, was sich darin befindet. Dies ist das Beispiel, das ich mir ausgedacht habe, um zu zeigen, wovon ich spreche:
Namen werden standardmäßig hier angezeigt ( 14 );
cwd = Dateipfad konvertieren ( "./" );
Neues Fenster ( "Prüfen" ,
Hlistbox (
tb = Tabbox (
„Tab1“ ,
Panelbox ( „Registerkarte 1“ ,
lb = Listenfeld ( Dateiverzeichnis ( „$SAMPLE_DATA“ )),
Buttonbox ( "Offen" ,
file = (lb << Werden Sie ausgewählt )[ 1 ];
dt = Offen ( „$SAMPLE_DATA\“ ||Datei)
)
),
)
),
Hlistbox (
Buttonbox ( "Zurück" , tb<< Ausgewählte festlegen ((tb << Werden Sie ausgewählt )- 1 )),
Buttonbox ( "Nächste" ,
newtab = Bewertung (other_boxes[(tb<< Werden Sie ausgewählt )]);
tb<< Anhängen ( "Tab" , neue Registerkarte);
tb<< Ausgewählte festlegen ((tb<< GetSelected )+ 1 )
)
)
);
other_boxes = {
PanelBox ( „Leer, weil ... Gründe?“ ),
PanelBox ( „Spaltennamen“ ,
Collistbox (dt, alle)
)
};
Es scheint, dass der allgemeine Konsens Nein ist. Deshalb werde ich es einfach als beantwortet markieren.
Betreff: Erstellen Sie ein neues Fenster () genau in seinem genauen Zustand neuDanke.Genießen.
Betreff: Erstellen Sie ein neues Fenster () genau in seinem genauen Zustand neuEntschuldigung, ich war scherzhaft.Ich wusste, dass du kein Videospiel erschaffst.
Als nächstes zeigt mein Beispiel eine Methodik und ist eigenständig.Ich habe keinen magischen Knopf für Sie erstellt.Man kann eine Methodik nicht einfach stehlen.Es bringt mich zum Lachen, dass Sie dachten, Sie könnten einfach meinen Code in Ihren Code einfügen und erwarten, dass er funktioniert.Aber um Ihnen zu antworten: Die Fenster auf der rechten Seite ändern sich nie und es sieht so aus, als würde der Code dieses Fenster jedes Mal genau replizieren.Sie müssten einen Vergleich von oben nach unten durchführen.
Ich werde nicht dafür bezahlt, Leuten in diesen Foren zu helfen, und ich habe keine Geduld mehr.Ich würde vorschlagen, dass Sie noch einmal zurückgehen, den Code tatsächlich lesen und verstehen, was er tut.Ich wünsche dir alles Gute.
Betreff: Erstellen Sie ein neues Fenster () genau in seinem genauen Zustand neuDanke, es ist nützlich, aber es ruft nur die ausgewählten Werte ab.Ich suche eher nach einer Vervielfältigung des Fensters selbst.
Betreff: Erstellen Sie ein neues Fenster () genau in seinem genauen Zustand neuNein, ich erstelle kein Videospiel.Daher das Wort analog. Hier ist ein Beispiel:
Namen werden standardmäßig hier angezeigt ( 14 );
cwd = Dateipfad konvertieren ( "./" );
Neues Fenster ( "Prüfen" ,
Hlistbox (
tb = Tabbox (
„Tab1“ ,
Panelbox ( „Registerkarte 1“ ,
lb = Listenfeld ( Dateiverzeichnis ( „$SAMPLE_DATA“ )),
Buttonbox ( "Offen" ,
file = (lb << Werden Sie ausgewählt )[ 1 ];
dt = Offen ( „$SAMPLE_DATA\“ ||Datei)
)
),
),
Buttonbox ( „Neu erstellen“ ,
tabCounter = 1 ;
text_list = { „“ };
enthalten (cwd|| „/recreateWindow2.jsl“ )
)
),
Hlistbox (
Buttonbox ( "Zurück" , tb<< Ausgewählte festlegen ((tb << Werden Sie ausgewählt )- 1 )),
Buttonbox ( "Nächste" ,
newtab = Bewertung (other_boxes[(tb<< Werden Sie ausgewählt )]);
tb<< Anhängen ( "Tab" , neue Registerkarte);
tb<< Ausgewählte festlegen ((tb<< GetSelected )+ 1 )
)
)
);
other_boxes = {
PanelBox ( „Leer, weil ... Gründe?“ ),
PanelBox ( „Spaltennamen“ ,
Collistbox (dt, alle)
)
};
Wenn ich das nun ausführe, erhalte ich beim Ausführen so etwas wie das, was ich bekomme, wenn ich auf „Neu erstellen“ drücke.

Dies geschieht, nachdem ich eine Datentabelle ausgewählt, geöffnet und dann auf „Weiter“ geklickt habe.

Hier drücke ich erneut auf „Weiter“.

Jetzt möchte ich Sie bitten, die Unterschiede zwischen dem linken und dem rechten Bild zu markieren.Wenn ich sage, dass das nicht funktioniert, dann deshalb, weil ich es versucht habe.Es sei denn, ich verstehe falsch, was Sie als „Arbeiten“ bezeichnen oder wie Sie Ihr Skript verwenden.Aber ich erwarte, dass die rechte Seite genauso aussieht wie die linke Seite (vorausgesetzt, ich habe die richtigen Datentabellen geöffnet).Darüber hinaus sollten auch alle Schaltflächen in allen Registerkarten funktionieren.
Betreff: Erstellen Sie ein neues Fenster () genau in seinem genauen Zustand neuEs tut mir leid, ich wusste nicht, dass Sie ein Videospiel entwickeln.Daher würde ich empfehlen, sich zunächst auf den Aufbau der Spiel-Engine zu konzentrieren. Danach wäre es eine einfache Sache, darin Sicherungszustände einzubauen.
Für andere, die dieses Forum lesen und eine einfachere Möglichkeit zur Neuerstellung eines Fensters suchen und auch die Methodik nicht verstehen.Ich habe ein komplexeres Beispiel angehängt, das die Robustheit und Einfachheit demonstriert.
Sie führen „recreateWindow.jsl“ aus, wodurch Sie zur Eingabe des Pfads zu „recreateWindow2.jsl“ aufgefordert werden.
Lassen Sie mich wissen, wenn Sie Fragen zum Ausführen dieser Dateien haben.
Betreff: Erstellen Sie ein neues Fenster () genau in seinem genauen Zustand neuIch weiß nicht, ob Sie jemals Emulatoren für alte Nintendo-Spiele verwendet haben oder nicht, aber dies verwendet einen sogenannten Speicherstatus, der dazu analog ist.
Was ich will, ist ein sicherer Zustand. Etwas, das genau speichert, auf welchem Level ich mich befinde, wo ich auf dem Bildschirm bin usw. Mir zu sagen, ich solle das Spiel einfach neu starten, ist nicht das, wonach ich suche.
Diese Methode löst ein anderes Problem.Ich verstehe nicht, wie das hier hilfreich sein soll.
Ich stimme zu, dass ich nicht zustimme. Ich meinte nichts für ungut.Entschuldigung, dass ich mich ursprünglich nicht richtig erklärt habe.
Betreff: Erstellen Sie ein neues Fenster () genau in seinem genauen Zustand neuWenn Sie etwas haben, das funktioniert, werde ich nicht weiter drängen.Aber lassen Sie mich klarstellen, was Sie oben gesagt haben.
Das METHODE tut Arbeit für Sie, da vom Benutzer bereitgestellte Informationen in Registerkarte 1 zur Erstellung von Registerkarte 4 (oder einer anderen Registerkarte) verwendet werden.
Wenn Sie das Skript einfach erneut ausführen, muss der Benutzer die Registerkarten 1 bis 3 durchgehen, um zu Registerkarte 4 zurückzukehren, wo er sich befand.Das stimmt, aber das trifft nicht zu DIE METHODE , Dies wäre nur die Anwendung des Beispiels.
„Im Moment muss ich ein Skript erstellen, das alle notwendigen Funktionen abruft, und diese in einer JSL speichern (ziemlich ähnlich zu dem, was Sie sagen, außer dass ich es spontan erstellen muss).“
Warum müssen Sie es spontan erstellen, wenn es bereits erstellt wurde? AKA, Sie haben ein Skript, das es einmal erstellen kann. Warum sollten Sie ein zweites Skript erstellen, um es zweimal zu erstellen?
Betreff: Erstellen Sie ein neues Fenster () genau in seinem genauen Zustand neuEs tut mir leid, ich habe mein Problem wohl falsch ausgedrückt.Diese Methode funktioniert bei mir nicht, da vom Benutzer bereitgestellte Informationen in Registerkarte 1 zum Erstellen von Registerkarte 4 (oder einer anderen Registerkarte) verwendet werden.Wenn ich das Skript einfach erneut ausführe, muss der Benutzer die Registerkarten 1 bis 3 durchgehen, um zu Registerkarte 4 zurückzukehren, wo sie sich befanden.Und die Registerkarten sind nicht angegeben, sie können alles sein.Im Moment muss ich ein Skript erstellen, das alle notwendigen Funktionen abruft und diese in einer JSL speichert (ziemlich ähnlich zu dem, was Sie sagen, außer dass ich es spontan erstellen muss). Es ist nur ein wenig verwirrend, das ist alles.Ich werde handeln, wenn es keinen besseren Weg gibt.Danke schön.
Betreff: Erstellen Sie ein neues Fenster () genau in seinem genauen Zustand neuIch habe ein Skript geschrieben, das die ausgewählte Registerkarte sowie die Werte von Textbearbeitungsfeldern, Zahlenbearbeitungsfeldern, Kombinationsfeldern und Listenfeldern erfasst und sie beim Schließen des Fensters in einem globalen zweidimensionalen Array speichert. Beim Öffnen des Fensters werden die Werte auf die Werte gesetzt, die beim Schließen des Fensters erfasst wurden.
Ich habe ein Beispielfenster in das Skript eingefügt, um die Funktionalität zu zeigen, aber die Funktionen getValues und setValues werden verwendet, um den Status zu erfassen und den Status zurückzusetzen, wenn das Skript erneut ausgeführt wird.
Einschränkungen:
1. Dieser Code berücksichtigt keine dynamisch erstellten Anzeigefelder. Um dies zu berücksichtigen, müssten Sie den Code anpassen.
2. Dieser Code führt keine Ihrer Plattformen erneut aus. Dazu können Sie den Code nach Bedarf anpassen.
3. Wenn Sie JMP schließen, geht der Status verloren. Sie können das Array jedoch auch in einer Textdatei statt in einer globalen Variablen speichern und die Werte können über alle Instanzen von JMP hinweg abgerufen werden.
4. Ich habe in diesem Skript (und allen anderen Anzeigefeldern, die ich vergesse) keine Kontrollkästchen implementiert.
Das Skript ist beigefügt.
Lassen Sie mich wissen, wenn Sie Fragen zum Skript haben.
Betreff: Erstellen Sie ein neues Fenster () genau in seinem genauen Zustand neuIch weiß nicht, was ich dir sagen soll.Meine Lösung stellt das Fenster exakt wieder her, k Alle Tastenfunktionen bleiben vollständig erhalten und Sie können erkennen, auf welcher Registerkarte Sie sich befinden und was im OP verlangt wird.
Außerdem ist Eval(nw<Betreff: Erstellen Sie ein neues Fenster () genau in seinem genauen Zustand neu
Ich erstelle es mit einem Skript, aber der Benutzer entscheidet, wie das Fenster aussehen soll (welche Datentabellen geöffnet werden sollen usw.).Und wenn ich mich auf Tab(2) befinde, wenn ich auf „Speichern“ drücke, möchte ich in der Lage sein, wieder in den Speicherzustand zu wechseln, wobei Tab(2) aktuell ausgewählt ist und alle Berichte und Tabellen an derselben Position geöffnet sind.Im Moment erstelle (versuche ich zu erstellen) ich eine Funktion, um alle relevanten Funktionen in einen String zu ziehen und ihn dann einfach auszuwerten (parse()).Es ist viel anfälliger für meine Fehler als etwas Einfaches wie Eval(nw<Betreff: Erstellen Sie ein neues Fenster () genau in seinem genauen Zustand neu
Ich gehe davon aus, dass Sie das dynamische Fenster mit einem Skript erstellt haben.In diesem Fall können Sie das Skript einfach erneut über die Schaltfläche ausführen lassen.
Namen werden standardmäßig hier angezeigt ( 1 ) ;
dt = offen ( „$SAMPLE_DATA/Big Class.jmp“ ) ;
jetzt = Neues Fenster ( "prüfen" , vlistbox ( „das Drehbuch“ ,
Bivariat ( Y ( : Höhe ) , X ( : Gewicht ) ) ;
Verteilung (
Kontinuierliche Verteilung (
Spalte ( : Höhe ) ,
Passen Sie die Zusammenfassungsstatistik an ( Bedeuten ( 0 ) )
) ,
Kontinuierliche Verteilung (
Spalte ( : Gewicht ) ,
Passen Sie die Zusammenfassungsstatistik an ( Bedeuten ( 0 ) )
)
) ;
Knopffeld ( „Fenster neu erstellen“ ,
enthalten ( „Pfad\zu\diesem\Skript\recreateWindow.jsl“ ) ;
)
)
) ;
Betreff: Erstellen Sie ein neues Fenster () genau in seinem genauen Zustand neuSie haben Recht damit, dass ein Sitzungsskript nicht das ist, was ich will.Wenn ich das versuche, öffnet es nur die Datentabelle, die ich geöffnet habe.Es wird nicht einmal versucht, ein neues Fenster() zu erstellen.
Außerdem habe ich eval(nw< na ja, a Und es macht Sinn, warum es nicht funktioniert. Ich hatte nur gehofft, dass es eine einfache Lösung gibt, anstatt alles neu erstellen zu müssen, wenn ich nicht weiß, wie alles aussehen wird.
Ich werde die Hoffnung noch eine Weile am Leben erhalten.
Nur um zu verdeutlichen, wonach ich frage:
box1 = PanelBox ( „1“ , teb = Textbearbeitungsfeld ( "Das ist ein Test" ), ButtonBox ( "Drucken" , drucken (teb<< Text abrufen )));
box2 = PanelBox ( „2“ , teb = Textbearbeitungsfeld ( "Das ist ein Test" ), ButtonBox ( "Drucken" , drucken ((teb<< Text abrufen )|| " Charlie" )));
box3 = PanelBox ( "3" , teb = Textbearbeitungsfeld ( "Das ist ein Test" ), ButtonBox ( "Drucken" , drucken ((teb<< Text abrufen )|| „Susie“ )));
nw = Neues Fenster ( "Beispiel" ,
tb = TabBox ()
);
Zeug = Evallist ({box1, box3});
für (ich= 1 , i<= nitems (Zeug), i++,
tb<< Anhängen ( verkohlen (i), Zeug )
);
nw<< Holen Sie sich das Skript
/* kehrt zurück
V-Listenfeld(
V-Listenfeld(
Tab-Feld(
Tab-Seitenfeld(
Titel( "1" ),
Panel-Box (Textbearbeitungsfeld („Dies ist ein Test“), ButtonBox)
),
Tab-Seitenfeld(
Titel( „2“),
Panel-Box (Textbearbeitungsfeld („Dies ist ein Test“), ButtonBox)
)
)
)
)
*/
Es gibt keinen Fenstertitel oder die Skripte für die Buttonbox.Außerdem läuft es einfach nicht.
Betreff: Erstellen Sie ein neues Fenster () genau in seinem genauen Zustand neuBedauerlicherweise, " A Sitzungsskript „wird die meisten Funktionen abfangen“ scheint nicht zu erfassen, was Vince wünscht.Die dynamischen Tab-Boxen werden nicht gut gehandhabt.In einer modifizierten Version meines obigen Skripts habe ich es ausgeführt, dann das Sitzungsskript gespeichert und es dann untersucht.Die Tab-Felder werden nicht in das Sitzungsskript übernommen.
Erstes Drehbuch
Namen standardmäßig hier ( 1 ) ;
dt = Offen ( „$SAMPLE_DATA/big class.jmp“ ) ;
Neues Fenster ( "prüfen" , Tab-Box ( „Registerkarte 1“ , vlb = V-Listenfeld () ) ) ;
Wenn ( Mod ( Tag ( Heute () ) , 2 ) == 0 ,
x1 = V-Listenfeld (
Tab-Box (
„Bivariat zuerst“ ,
biv = Bivariat ( Y ( : Höhe ) , X ( : Gewicht ) ) ,
dist = Verteilung ( Nominale Verteilung ( Spalte ( : Alter ) ) )
)
) ,
x1 = V-Listenfeld (
Tab-Box (
„Verteilung zuerst“ ,
dist = Verteilung ( Nominale Verteilung ( Spalte ( : Alter ) ) ) ,
biv = Bivariat ( Y ( : Höhe ) , X ( : Gewicht ) ) ;
)
)
) ;
vlb << anhängen ( x1 ) ;
Das Sitzungsskript
Offen ( „C:\Programme\SAS\JMPPRO\12\Samples\Data\Big Class.jmp“ , Fenstergrenzen ( 275 , 484 , 1288 , 1141 ) ) ;
Neues Fenster ( "prüfen" ,
V-Listenfeld (
Verteilung ( Nominale Verteilung ( Spalte ( : Alter ) ) ) ,
Bivariat ( Y ( : Höhe ) , X ( : Gewicht ) )
)
) << Fenster verschieben ( 722 , 15 ) << Größenfenster ( 488 , 1025 ) << Fenstersymbol festlegen ( "Datei melden" ) ;
Betreff: Erstellen Sie ein neues Fenster () genau in seinem genauen Zustand neuA Sitzungsskript erfasst die meisten Funktionen Ihrer benutzerdefinierten Berichte und interaktiven Änderungen, einschließlich eines zusammengesetzten Berichts wie in Jims Beispiel. Es spart aber auch Code für die Neuerstellung anderer Fenster und Tabellen, die Sie möglicherweise nicht interessieren.
Sie können jederzeit ein Sitzungsskript speichern Datei Speisekarte.
In den Einstellungen kann auch festgelegt werden, dass beim Beenden von JMP immer ein Sitzungsskript gespeichert wird.
Betreff: Erstellen Sie ein neues Fenster () genau in seinem genauen Zustand neuWährend JMP sehr gut ein Skript erstellen kann, um jede einzelne Plattform neu zu erstellen, überträgt es dies nicht auf vom Benutzer erstellte Anzeigefenster, die aus diesen Plattformen bestehen.
Das folgende Skript ist ein sehr einfaches Beispiel, das veranschaulicht, dass JMP KEINE verwendbaren Skripte aus benutzerdefinierten Anzeigefenstern erstellt.
Namen werden standardmäßig hier angezeigt ( 1 ) ;
dt = offen ( „$SAMPLE_DATA/Big Class.jmp“ ) ;
jetzt = Neues Fenster ( "prüfen" , Tab-Feld ( „das Drehbuch“ ,
Bivariat ( Y ( : Höhe ) , X ( : Gewicht ) ) ;
Verteilung (
Kontinuierliche Verteilung (
Spalte ( : Höhe ) ,
Passen Sie die Zusammenfassungsstatistik an ( Bedeuten ( 0 ) )
) ,
Kontinuierliche Verteilung (
Spalte ( : Gewicht ) ,
Passen Sie die Zusammenfassungsstatistik an ( Bedeuten ( 0 ) )
)
) ;
)
) ;
rr = jetzt << Holen Sie sich das Skript ;
zeigen ( rr ) ;
evalu ( rr ) ;