Come aggiornare le caselle di visualizzazione in jmp?CIAO,
Ho una casella di visualizzazione (casella di testo) che vorrei aggiornare in un ciclo for.
Vedo che non sono in grado di aggiornare in modo affidabile la casella di testo nel ciclo.
Questo è davvero fastidioso perché ho molti file da elaborare e non è possibile farlo
controllare sempre fisicamente le unità per vedere se i file vengono elaborati.
Sto usando Wait(0) in modo da consentire a jmp di recuperare il ritardo. Ho provato la luce occupata
anche che ha lo stesso problema. Alla fine tutto si aggiorna.
Ho provato anche Wait(1) che funziona ma ancora una volta non in modo così affidabile.
Come posso creare un semplice aggiornamento dello stato della casella di testo?
Grazie per i tuoi input!
Ri: Come aggiornare le caselle di visualizzazione in jmp?Sì, li ho visti. La barra di avanzamento è ordinata. Tuttavia, viene visualizzato in una nuova finestra e non funziona bene se provi a sistemare tutto in un'unica finestra. Promettente però. Proverò a vedere se riesco a farlo funzionare in qualche modo nella mia interfaccia utente. L'altro è semplicemente un metodo di casella di testo che, come accennato, almeno nel mio caso non funziona.Immagino che il problema riguardi davvero il tempo insufficiente per gli aggiornamenti di visualizzazione nel caso in cui il ciclo for abbia troppe cose (alcuni post menzionano qualcosa a che fare con Windows che non è in grado di aggiornare le caselle di visualizzazione in tempo). Il metodo della casella di testo funziona se metto un'attesa più lunga. Un tempo di attesa pari a 0 non funziona sempre (il che significa che spesso tutto viene aggiornato al termine del ciclo for).
Cercherò di creare un tracker generale dei progressi che possa essere aggiornato in modo affidabile. Se ci riesco, pubblicherò di nuovo.
Grazie per il vostro aiuto e pazienza!
Ri: Come aggiornare le caselle di visualizzazione in jmp?Ho cercato "barra di avanzamento" in questo forum e ho trovato due link utili:
Controlla il codice da @msharp Qui: Come mostrare la barra di avanzamento invece dell'apertura e chiusura delle tabelle intermedie
Codice simile da @SDF1 Qui: Suggerimento su come creare uno script di una piccola finestra di aggiornamento/avanzamento per la modellazione
Ri: Come aggiornare le caselle di visualizzazione in jmp?Grazie. Lo snippet che hai fornito funziona ovviamente, ma sto cercando qualcosa che posso
integrare nella mia interfaccia utente. Non voglio mostrare un messaggio pop-up. Ci sono molti elementi nella mia interfaccia utente
che richiedono questa funzionalità di stato e quindi desidero qualcosa da aggiungere alla mia Nuova finestra()
come casella di visualizzazione e utilizzarla come barra di stato.
Sto cercando qualcosa del genere:
cap = "";
some_test_function = Function({},
Show("What?");
for (i = 1, i <= 1000000, i++,
if (mod(i, 1000) == 0,
//Something like this!!! Not working of course.
cap << Set Text("Processing " || char(i) || " records");
wait(0);
);
k = i^3;
l = k * 4 + i^4;
);
);
nw = New Window("test",
bb = Button Box("test caption", some_test_function),
cap = caption("processing"),
);Ho provato a usare anche la spia di occupato ma ha lo stesso problema. Inoltre, non so se il pezzo precedente, se corretto, funzionerà quando ci sono molte operazioni sulla tabella all'interno del ciclo for invece di un semplice conteggio. Forse dovrei usare wait. Ecco perché sono bloccato con l'opzione della casella di testo.
Apprezzerei molto qualsiasi altra soluzione che possa essere utilizzata in uno scenario di interfaccia utente con più elementi che hanno accesso alla stessa casella di visualizzazione dello stato.
Grazie!
Ri: Come aggiornare le caselle di visualizzazione in jmp?Se stai mostrando lo stato di elaborazione all'utente, potresti provare la funzione di didascalia invece di una casella di testo.
for (i = 1, i <= 1000000, i++,
if (mod(i, 1000) == 0,
caption("Processing " || char(i) || " records");
wait(0);
);
k = i^3;
l = k * 4 + i^4;
);
caption(remove);
wait(0);Ri: Come aggiornare le caselle di visualizzazione in jmp?Grazie per il tuo commento. Infatti, lo so. Il codice che mi hai dato genera semplicemente una finestra con un numero.
Immagino che stia stampando l'ultimo numero poiché tutto va molto velocemente.
Sto facendo qualcosa di simile a quello che hai mostrato: un ciclo con una serie di manipolazioni di tabelle al suo interno e un aggiornamento del testo su
quindi fine del ciclo. Quando dico affidabile, intendo che se inserisco un aggiornamento alla fine del ciclo for dovrebbe cambiare il testo
al momento.Spesso è visibile solo l'ultimo aggiornamento.
Ciò che ho scoperto che funziona ora è qualcosa che ho ottenuto da un altro post (non so quale dato che ne stavo guardando alcuni).
Quindi, in pratica, è possibile creare ed eliminare una casella di testo in un ciclo. In qualche modo l'aggiornamento del testo non aggiorna la casella di testo, il che è strano.
Ad ogni modo, al momento eliminare e ricreare la casella di testo nel posto esatto con un nuovo testo funziona per me.
Grazie per i tuoi input!
Ri: Come aggiornare le caselle di visualizzazione in jmp?Probabilmente sono necessari maggiori dettagli per comprendere il commento "impossibile aggiornare in modo affidabile". Il codice seguente mostra l'idea, ma sospetto che tu lo sappia già. Tieni presente che 'Wait()' deve generalmente essere evitato in JSL, e qui sta solo simulando la durata di qualche altra elaborazione.
NamesDefaultToHere(1);
nw = NewWindow("Update Text Box", tb = TextBox(Char(Today())), << sizeWindow(400, 200));
for(t=1, t<=10, t++,
/// Simulate some activity that takes time
delay = RandomInteger(1, 5);
Wait(delay);
// Update the Text Box
tb << setText(Char(Today()));
Beep();
);