Aggiornamento di Windows e Persistenza delle finestre<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ciao. Ho un'espressione che crea per prima una finestra di notifica modale e, dopo aver premuto OK, crea una seconda finestra di modifica. Nella finestra di modifica, c'è un pulsante Aggiorna che chiude la finestra ed esegue nuovamente l'espressione originale. Quando premo "Aggiorna", la finestra di modifica si chiude come previsto e viene visualizzata nuovamente la finestra di notifica modale. Tuttavia, la seconda iterazione della finestra di modifica appare con un "2" aggiunto al suo nome ("editwin 2") anche se la editwin originale è già chiusa. Inoltre, lo script << On Close che deve essere eseguito immediatamente quando la finestra di modifica viene chiusa la prima volta non viene eseguito fino a quando non viene chiusa la seconda istanza della finestra di notifica e la seconda istanza della finestra di modifica sta per essere aperta. Sembra che, sebbene la finestra di modifica sia chiusa, persiste nella memoria fino a quando non viene visualizzata l'istanza successiva della finestra di modifica.
Qualcuno ha una buona spiegazione per questo comportamento e, cosa più importante, qual è la soluzione?
Grazie.
Nomi predefiniti qui (1);
Elimina simboli ();
editwin.expr = Expr (
BB1 = ButtonBox ("ok",
Finestra ("editwin") << Chiudi finestra;
);
BB2 = ButtonBox ("Aggiorna",
Finestra ("editwin") << Chiudi finestra;
editwin.expr;
);
modwin = Nuova finestra ("modwin", << Modal,
TextBox ("Sono una finestra di notifica"),
ButtonBox ("OK", Write ("Closing modwin \! N"))
);
editwin = Nuova finestra ("editwin",
TextBox ("I'm an edit window"),
BB1, BB2
);
editwin << Su Chiudi (Scrivi ("Chiusura editwin \! N"));
editwin << Imposta dimensioni finestra (300, 200);
);
editwin.expr;
Ri: Refreshing Windows and Window PersistenceOffrendo questo codice solo nel caso in cui ti dia un approccio diverso al problema che stai cercando di risolvere
Nomi predefiniti qui ( 1 ) ;
Fai la finestra di modifica = Funzione ({} , { Locale predefinito } ,
nwEdit = Nuova finestra ( "Editwin" , << Modale ,
Casella di testo ( "Sono una finestra di modifica" ) ,
ButtonBox ( "OK" ) ,
) ;
Se ( nwEdit [ "Pulsante" ] == - 1 ,
retVal = 1
,
retVal = 0
) ;
retVal
) ;
nw = Nuova finestra ( "Modwin" , << Modale ,
<< On Validate (
Fai la finestra di modifica ()
) ,
Casella di testo ( "Sono una finestra di notifica" ) ,
ButtonBox ( "OK" , Scrivi ( "Chiusura modwin \! N" ) ; )
) ;
Ri: Refreshing Windows and Window Persistencesei corretto, il mio lavoro non risolve il problema di nwaming della finestra, ma rimuove la dipendenza dal nome della finestra. jJMLP Jmp passa la finestra di chiusura al sistema operativo e quindi perde il controllo assoluto di quando la finestra viene effettivamente chiusa
Ri: Refreshing Windows and Window PersistenceInteressante. Sto usando JMP 11.1.1 per Windows (64 bit). Non sono pronto a risolvere il problema ancora come problema 11 vs 12 o problema Mac vs Windows. In ogni caso, ho ancora bisogno di trovare una soluzione alternativa per la mia attuale configurazione.
Ri: Refreshing Windows and Window PersistenceSfortunatamente il tuo script non impedisce la ridenominazione della finestra. Ho provato e ottenere lo stesso identico comportamento.
Ri: Refreshing Windows and Window PersistenceCordiali saluti, ho provato lo script in JMP 12 per Mac e non ho visto questo problema; editwin si chiamava editwin ogni volta, non si verificava la numerazione automatica.
Tuttavia, in JMP 12 per Windows sono riuscito a riprodurre il problema: editwin 2, editwin 3 ecc. vengono generati dopo ogni aggiornamento. Non ho idea del perché.
L'approccio di Txnelson presenta una buona soluzione
Ri: Refreshing Windows and Window PersistenceNon ero in grado di risolvere il problema di denominazione della finestra. Sembra che JMP detenga il nome in riserva per la durata dell'esecuzione di un determinato EXPR. Tuttavia, il codice sottostante rimuove la preoccupazione sul nome della finestra, prendendo tutte le azioni sull'handle della finestra, piuttosto che il nome della finestra:
Nomi predefiniti qui (1);
Elimina simboli ();
editwin.expr = Expr (
BB1 = ButtonBox ("ok",
editwinx << Chiudi la finestra;
);
BB2 = ButtonBox ("Aggiorna",
editwinx << Chiudi la finestra;
editwin.expr;
);
modwin = Nuova finestra ("modwin", << Modal,
TextBox ("Sono una finestra di notifica"),
ButtonBox ("OK", Write ("Closing modwin \! N"));
);
editwinx = Nuova finestra ("editwin",
TextBox ("I'm an edit window"),
BB1, BB2
);
editwinx << Su Chiudi (Scrivi ("Chiusura editwinx \! N"));
editwinx << Imposta dimensioni finestra (300, 200);
);
editwin.expr;