Ricrea esattamente una nuova window() nel suo stato esatto<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Sto creando una nuova finestra dinamica() con un numero x di schede e grafici (altre cose).C'è qualcosa come Eval(dt << Get Script) che ricreerà esattamente la finestra?Mantenere tutte le funzioni dei pulsanti completamente intatte e sapere dove mi trovavo effettivamente.
In questo momento, se lo faccio, non riesco nemmeno a crearlo utilizzando eval(nw<
Modifica* Giusto per essere chiari.Sto cercando di ricreare una finestra senza sapere esattamente cosa c'è dentro. Questo è l'esempio che mi è venuto in mente per mostrare di cosa sto parlando:
I nomi predefiniti sono qui ( 14 );
cwd = convertire il percorso del file ( "./" );
Nuova finestra ( "Test" ,
Casella di riepilogo (
tb = scheda (
"Scheda1" ,
Scatola a pannelli ( "Scheda 1" ,
libbre = casella di riepilogo ( filesindirectory ( "$SAMPLE_DATA" )),
pulsante ( "Aprire" ,
file = (lb << Fatti selezionare )[ 1 ];
dt = Aprire ( "$SAMPLE_DATA\" ||file)
)
),
)
),
Casella di riepilogo (
Casella di pulsanti ( "Indietro" , tb<< Imposta selezionato ((tb << Fatti selezionare )- 1 )),
Casella di pulsanti ( "Prossimo" ,
newtab = Val (altre_scatole[(tb<< Fatti selezionare )]);
tb<< Aggiungere ( "Scheda" , nuova scheda);
tb<< Imposta selezionato ((tb<< Ottieniselezionato )+ 1 )
)
)
);
altre_scatole = {
PanelBox ( "Vuoto, perché... ragioni?" ),
PanelBox ( "Nomi delle colonne" ,
Collistbox (dt, tutto)
)
};
Sembra che il consenso generale sia no. Quindi lo contrassegnerò semplicemente come risposto.
Re: Ricrea esattamente una nuova window() nel suo stato esattoGrazie.Godere.
Re: Ricrea esattamente una nuova window() nel suo stato esattoScusa, ero scherzoso.Sapevo che non stavi creando un videogioco.
Successivamente, il mio esempio mostra una metodologia ed è autonomo.Non ho creato un pulsante magico per te.Non puoi semplicemente rubare una metodologia.Mi fa ridere il fatto che pensassi di poter semplicemente inserire il mio codice nel tuo e aspettarti che funzioni.Ma per risponderti, le finestre a destra non cambiano mai e sembra che il codice replichi esattamente quella finestra ogni volta.Dovresti confrontare dall'alto verso il basso.
Non sono pagato per aiutare le persone su questi forum e ho esaurito la pazienza.Ti suggerirei di tornare indietro, leggere effettivamente il codice e capire cosa sta facendo.Ti auguro il meglio.
Re: Ricrea esattamente una nuova window() nel suo stato esattoGrazie, è utile ma ottiene solo i valori selezionati da esso.Sto cercando più una duplicazione della finestra stessa.
Re: Ricrea esattamente una nuova window() nel suo stato esattoNo, non sto creando un videogioco.Da qui la parola analogo. Ecco un esempio:
I nomi predefiniti sono qui ( 14 );
cwd = convertire il percorso del file ( "./" );
Nuova finestra ( "Test" ,
Casella di riepilogo (
tb = scheda (
"Scheda1" ,
Scatola a pannelli ( "Scheda 1" ,
libbre = casella di riepilogo ( filesindirectory ( "$SAMPLE_DATA" )),
pulsante ( "Aprire" ,
file = (lb << Fatti selezionare )[ 1 ];
dt = Aprire ( "$SAMPLE_DATA\" ||file)
)
),
),
Casella di pulsanti ( "Ricreare" ,
tabContatore = 1 ;
lista_testo = { "" };
includere (cwd|| "/recreateWindow2.jsl" )
)
),
Casella di riepilogo (
Casella di pulsanti ( "Indietro" , tb<< Imposta selezionato ((tb << Fatti selezionare )- 1 )),
Casella di pulsanti ( "Prossimo" ,
newtab = Val (altre_scatole[(tb<< Fatti selezionare )]);
tb<< Aggiungere ( "Scheda" , nuova scheda);
tb<< Imposta selezionato ((tb<< Ottieniselezionato )+ 1 )
)
)
);
altre_scatole = {
PanelBox ( "Vuoto, perché... ragioni?" ),
PanelBox ( "Nomi delle colonne" ,
Collistbox (dt, tutto)
)
};
Ora quando lo eseguo ottengo qualcosa del genere quando corro accanto a ciò che ottengo quando premo ricrea.

Ecco dopo aver selezionato una tabella dati e averla aperta, quindi premere Avanti.

Ecco quando premo di nuovo Avanti.

Ora vorrei che tu segnassi le differenze tra le immagini sinistra e destra.Quando dico che non funziona è perché l'ho provato.A meno che io non abbia frainteso ciò che chiami lavoro o come usare il tuo script.Ma la mia aspettativa è che la destra sia esattamente uguale alla sinistra (supponendo che io abbia aperto le tabelle dati corrette).Non solo, ma dovrebbero funzionare anche tutti i pulsanti in tutte le schede.
Re: Ricrea esattamente una nuova window() nel suo stato esattoMi dispiace, non avevo capito che stavi costruendo un videogioco.Pertanto, consiglierei di concentrarsi prima sulla costruzione del motore di gioco, dopo sarebbe una questione semplice incorporarvi gli stati di salvataggio.
Per gli altri che leggono questo forum e desiderano un modo più semplice per ricreare una finestra e inoltre non comprendono la metodologia.Ho allegato un esempio più complesso che dimostra la robustezza e la semplicità.
Eseguirai ricreaWindow.jsl che ti chiederà il percorso per ricreareWindow2.jsl.
Fammi sapere se hai domande sull'esecuzione di questi file.
Re: Ricrea esattamente una nuova window() nel suo stato esattoNon so se hai mai usato emulatori per vecchi giochi Nintendo o meno, ma questo usa qualcosa chiamato stato di salvataggio che è analogo a questo.
Quello che voglio è uno stato di salvataggio. Qualcosa che salvi esattamente il livello in cui mi trovo, dove mi trovo sullo schermo, ecc. Dirmi di riavviare semplicemente il gioco non è quello che sto cercando.
Questo metodo risolve un problema diverso.Non vedo come ciò possa essere utile a questo.
D'accordo in disaccordo, immagino. Non volevo offenderti.Mi scuso per non essermi spiegato correttamente inizialmente.
Re: Ricrea esattamente una nuova window() nel suo stato esattoSe hai qualcosa che funziona, non spingerò oltre.Ma lasciami chiarire quello che hai detto sopra.
Questo METODO fa funziona per te perché le informazioni fornite dall'utente nella scheda 1 verranno fornite per creare la scheda 4 (o qualsiasi altra scheda).
Se esegui semplicemente di nuovo lo script, l'utente dovrà passare attraverso le schede 1-3 per tornare alla scheda 4 dove si trovava.Questo è vero, ma non sarebbe applicabile IL METODO , questo sarebbe solo applicare l'esempio.
"In questo momento devo creare uno script che inserisca tutte le funzioni necessarie e salvarlo in un jsl (abbastanza simile a quello che stai dicendo, tranne che devo crearlo al volo)."
Perché devi crearlo al volo se è già stato creato? AKA, hai uno script che può costruirlo una volta, perché creare un secondo script per costruirlo due volte?
Re: Ricrea esattamente una nuova window() nel suo stato esattoMi scuso, devo aver esposto male il mio problema.Questo metodo non funziona per me perché le informazioni fornite dall'utente nella scheda 1 verranno fornite per creare la scheda 4 (o qualsiasi altra scheda).Se rieseguo semplicemente lo script, l'utente dovrà passare attraverso le schede 1-3 per tornare alla scheda 4 dove si trovavano.E le schede non sono specificate, possono essere qualsiasi cosa.In questo momento devo creare uno script che inserisca tutte le funzioni necessarie e salvarlo in un jsl (abbastanza simile a quello che stai dicendo tranne che devo crearlo al volo), è solo leggermente confuso, tutto qui.Mi occuperò io se non c'è un modo migliore.Grazie.
Re: Ricrea esattamente una nuova window() nel suo stato esattoHo scritto uno script che cattura quale scheda è stata selezionata nonché i valori delle caselle di modifica del testo, delle caselle di modifica del numero, delle caselle combinate e delle caselle di riepilogo e li memorizza in un array bidimensionale globale quando la finestra si chiude. Quando la finestra si apre, i valori vengono impostati sui valori acquisiti quando la finestra è stata chiusa.
Ho incluso una finestra di esempio nello script per mostrare la funzionalità, ma le funzioni getValues e setValues sono quelle utilizzate per acquisire lo stato e reimpostarlo quando lo script viene eseguito nuovamente.
Limitazioni:
1. Questo codice non tiene conto delle eventuali caselle di visualizzazione create dinamicamente. Dovresti modificare il codice per tenerne conto.
2. Questo codice non esegue nuovamente nessuna delle tue piattaforme. È possibile modificare il codice secondo necessità per farlo.
3. Quando si chiude JMP, lo stato viene perso. È tuttavia possibile salvare l'array in un file di testo anziché in una variabile globale e i valori potranno essere recuperati in tutte le istanze di JMP.
4. Non ho implementato le caselle di controllo in questo script (e in qualsiasi altra casella di visualizzazione che sto dimenticando).
La sceneggiatura è allegata.
Fammi sapere se hai domande sulla sceneggiatura.
Re: Ricrea esattamente una nuova window() nel suo stato esattoNon so cosa dirtiLa mia soluzione ricrea esattamente la finestra, k mantenendo tutte le funzioni dei pulsanti completamente intatte e può sapere in quale scheda ti trovi e tutto ciò che è richiesto nell'OP.
Inoltre, Eval(nw<Re: Ricrea esattamente una nuova window() nel suo stato esatto
Lo sto creando con uno script ma l'utente sceglierà come desidera che appaia la finestra (quali tabelle di dati aprire, ecc.).E se sono sulla scheda (2) quando premo lo stato di salvataggio, voglio poter riaprire nello stato di salvataggio, con la scheda (2) attualmente selezionata e tutti i report e le tabelle aperti nella stessa posizione.In questo momento sto creando (cercando di creare) una funzione per inserire tutte le funzioni rilevanti in una stringa e poi semplicemente eval(parse())ing.Si lascia aperto ai miei errori molto più di qualcosa di semplice come Eval(nw<Re: Ricrea esattamente una nuova window() nel suo stato esatto
Presumo che tu abbia creato la finestra dinamica con uno script.In tal caso potresti semplicemente fare in modo che il pulsante esegua nuovamente lo script.
i nomi sono predefiniti qui ( 1 ) ;
dt = aprire ( "$SAMPLE_DATA/Classe grande.jmp" ) ;
ora = Nuova finestra ( "test" , vlistbox ( "il copione" ,
Bivariato ( Y ( : altezza ) , X ( : peso ) ) ;
Distribuzione (
Distribuzione continua (
Colonna ( : altezza ) ,
Personalizza le statistiche riassuntive ( Significare ( 0 ) )
) ,
Distribuzione continua (
Colonna ( : peso ) ,
Personalizza le statistiche riassuntive ( Significare ( 0 ) )
)
) ;
casella dei pulsanti ( "Ricrea finestra" ,
includere ( "percorso\di\questo\script\recreateWindow.jsl" ) ;
)
)
) ;
Re: Ricrea esattamente una nuova window() nel suo stato esattoAvresti ragione nel dire che uno script di sessione non è quello che voglio.Se lo provo, tutto ciò che fa è aprire la tabella dati che ho aperto.Non tenta nemmeno di creare una nuova finestra().
Inoltre, ho provato eval(nw< beh, un E ha senso il motivo per cui non funziona, speravo solo che ci fosse una soluzione semplice piuttosto che dover ricreare tutto se non so come sarà tutto.
Manterrò viva la speranza ancora per un po'.
Giusto per chiarire cosa chiedo:
casella1 = PanelBox ( "1" , teb = Casella di modifica del testo ( "Questa è una prova" ), ButtonBox ( "Stampa" , stampa (teb<< Ottieni testo )));
casella2 = PanelBox ( "2" , teb = Casella di modifica del testo ( "Questa è una prova" ), ButtonBox ( "Stampa" , stampa ((teb<< Ottieni testo )|| " Charlie" )));
casella3 = PanelBox ( "3" , teb = Casella di modifica del testo ( "Questa è una prova" ), ButtonBox ( "Stampa" , stampa ((teb<< Ottieni testo )|| "Susie" )));
nw = Nuova finestra ( "Esempio" ,
tb = TabBox ()
);
roba = Evallista ({casella1, casella3});
per (io= 1 , io<= nitems (roba), i++,
tb<< Aggiungere ( car (i), roba )
);
nw<< Ottieni la sceneggiatura
/* ritorna
Casella di riepilogo V(
Casella di riepilogo V(
Casella scheda(
Scheda Pagina Box(
Titolo( "1" ),
Casella del pannello (Casella di modifica del testo ("Questo è un test"), ButtonBox)
),
Scheda Pagina Box(
Titolo( "2" ),
Casella del pannello (Casella di modifica del testo ("Questo è un test"), ButtonBox)
)
)
)
)
*/
Non ha il titolo della finestra o gli script per la casella dei pulsanti.Inoltre, semplicemente non funzionerà.
Re: Ricrea esattamente una nuova window() nel suo stato esattoPurtroppo, " UN Copione della sessione catturerà la maggior parte delle funzionalità" non sembra catturare ciò che Vince desidera.Le schede dinamiche non vengono gestite bene.In una versione modificata del mio script precedente, l'ho eseguito, quindi ho salvato lo script di sessione e quindi l'ho esaminato.Le caselle delle schede non vengono riportate nello script di sessione.
Scrittura iniziale
Nomi predefiniti qui ( 1 ) ;
dt = Aprire ( "$SAMPLE_DATA/grande classe.jmp" ) ;
Nuova finestra ( "test" , Casella scheda ( "scheda 1" , vlb = Casella di riepilogo V () ) ) ;
Se ( Mod ( Giorno ( Oggi () ) , 2 ) == 0 ,
x1 = Casella di riepilogo V (
Casella scheda (
"Prima bivariata" ,
biv = Bivariato ( Y ( : altezza ) , X ( : peso ) ) ,
dist = Distribuzione ( Distribuzione nominale ( Colonna ( : età ) ) )
)
) ,
x1 = Casella di riepilogo V (
Casella scheda (
"Prima la distribuzione" ,
dist = Distribuzione ( Distribuzione nominale ( Colonna ( : età ) ) ) ,
biv = Bivariato ( Y ( : altezza ) , X ( : peso ) ) ;
)
)
) ;
vlb << aggiungere ( x1 ) ;
Lo script della sessione
Aprire ( "C:\Programmi\SAS\JMPPRO\12\Samples\Data\Big Class.jmp" , limiti della finestra ( 275 , 484 , 1288 , 1141 ) ) ;
Nuova finestra ( "test" ,
Casella di riepilogo V (
Distribuzione ( Distribuzione nominale ( Colonna ( : età ) ) ) ,
Bivariato ( Y ( : altezza ) , X ( : peso ) )
)
) << Sposta finestra ( 722 , 15 ) << Finestra delle dimensioni ( 488 , 1025 ) << Imposta l'icona della finestra ( "File di rapporto" ) ;
Re: Ricrea esattamente una nuova window() nel suo stato esattoUN Copione della sessione catturerà la maggior parte delle funzionalità dei tuoi report personalizzati e delle modifiche interattive, incluso un report composto come nell'esempio di Jim. Ma salverà anche il codice per ricreare altre finestre e tabelle di cui potresti non preoccuparti.
Puoi salvare uno script di sessione in qualsiasi momento dal file File menù.
È inoltre possibile impostare nelle preferenze il salvataggio sempre di uno script di sessione all'uscita da JMP.
Re: Ricrea esattamente una nuova window() nel suo stato esattoSebbene JMP possa creare molto bene uno script per ricreare qualsiasi singola piattaforma, non lo trasferisce alle finestre di visualizzazione create dall'utente costituite da tali piattaforme.
Lo script seguente è un esempio molto semplice che illustra che JMP NON crea script utilizzabili da finestre di visualizzazione definite dall'utente.
i nomi sono predefiniti qui ( 1 ) ;
dt = aprire ( "$SAMPLE_DATA/Classe grande.jmp" ) ;
ora = Nuova finestra ( "test" , casella della scheda ( "il copione" ,
Bivariato ( Y ( : altezza ) , X ( : peso ) ) ;
Distribuzione (
Distribuzione continua (
Colonna ( : altezza ) ,
Personalizza le statistiche riassuntive ( Significare ( 0 ) )
) ,
Distribuzione continua (
Colonna ( : peso ) ,
Personalizza le statistiche riassuntive ( Significare ( 0 ) )
)
) ;
)
) ;
rr = ora << ottenere la sceneggiatura ;
spettacolo ( rr ) ;
eval ( rr ) ;