<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Questa domanda è correlata a una mia precedente riguardante l'aggiornamento di alcuni script per utilizzare meglio le funzionalità di JMP 9 ( http://communities.sas.com/message/109908#109908 ), ma non è proprio lo stesso problema, credo.Si tratta essenzialmente di ridisegnare una finestra contenente una casella di riepilogo dalla quale è già stata effettuata una selezione.Nel seguente esempio semplificato, effettuo una selezione dall'Elenco A, ricreando quindi la finestra in cui appare l'Elenco A con una seconda casella di riepilogo (List Box
il cui contenuto dipende dalla selezione effettuata da A.Se l'utente seleziona dalla casella di riepilogo B, la selezione finale verrà visualizzata nella casella di testo sottostante.Se viene effettuata una selezione dalla casella di riepilogo A, nella casella di riepilogo B viene fornito un nuovo elenco di scelte da cui l'utente deve ancora effettuare una selezione finale.L'esecuzione in JMP 8 funziona come voglio, mentre l'esecuzione in JMP 9 crea un ciclo infinito.Penso di poter capire perché: la riga che ho contrassegnato con un commento (che evidenzia la selezione effettuata dalla casella di riepilogo A con una proprietà "<< set selezionato" quando entrambe le caselle di riepilogo A e B appaiono nella finestra) tratta l'assegnazione come se avessi effettuato quella selezione cliccandoci sopra, e agissi di conseguenza.Ovviamente potrei semplicemente rimuovere questa riga, ma se lo faccio, l'utente non potrà vedere il percorso che ha portato alla selezione finale dalle caselle di riepilogo - ed è necessario che lo veda.In alternativa potrei semplicemente includere tutte le caselle di elenco nella finestra dall'inizio e non ridisegnare affatto la finestra, ma nella versione reale l'utente non sa all'inizio quante caselle di elenco dovrà utilizzare - e non voglio davvero mostrare sullo schermo più di quanto sia effettivamente necessario in ogni momento.
Elenco_A = { "Andy" , "Bessie" , "Carrie" , "Davina" , "Eddie" } ;
Elenco_B = {} ;
Espr_Ridisegna_NW = espressione (
Elenco_Box_A = Casella di riepilogo ( Elenco_A , val ( Espr_Crea_Lista_B )) ;
NO = nuova finestra ( "Nuova finestra" ,
HListBox (
Scatola del pannello ( "Prima scelta" , Elenco_Box_A ) ,
Se ( Una scelta > 0 ,
Scatola del pannello ( "Seconda scelta" ,
List_Box_B ,
Casella di testo ( " " ) ,
TextBox_Risposta = Casella di testo ( "" )
)
)
)
) ;
Se ( Una scelta > 0 , Elenco_Box_A << insieme selezionato ( Una scelta )) ; // Questa riga causa il problema;
NO << spostare la finestra ( 200 , 200 ) ;
) ;
Espr_Crea_List_B = espressione (
Prefisso = ( Elenco_Box_A << essere selezionato )[ 1 ] ;
spettacolo ( Prefisso ) ;
Una scelta = ( Elenco_Box_A << ottenere gli indici selezionati )[ 1 ] ;
spettacolo ( Una scelta ) ;
Elenco_B = {} ;
per ( io = 1 , io <= 5 , io ++,
inserire ( Elenco_B , Prefisso || " " || car ( io ))
) ;
List_Box_B = Casella di riepilogo ( Elenco_B ,
B_Scelta = ( List_Box_B << essere selezionato )[ 1 ] ;
TextBox_Risposta << impostare il testo ( "La selezione è: " || B_Scelta ) ;
NO << riproporre
) ;
NO << chiudi la finestra ;
eval ( Espr_Ridisegna_NW ) ;
) ;
List_Box_B = Casella di riepilogo ( Elenco_B , stampa ( "" )) ;
TextBox_Risposta = Casella di testo ( "" ) ;
Risposta = "" ;
Una scelta = 0 ;
eval ( Espr_Ridisegna_NW ) ;
Qualcuno riesce a vedere una via d'uscita semplice che non implichi una ristrutturazione sostanziale del modo in cui funziona?Ho riscontrato un problema simile in tre o quattro script, quindi vorrei ridurre al minimo qualsiasi lavoro correttivo, se possibile.
Molte grazie per qualsiasi aiuto ricevuto.