Newsgroup: it.comp.lang.visual-basic
Titolo: Problema molto grave

Ragazzi ho un problema serio che non riesco in nessun modo a
risolvere; visto che io non mi esprimo bene in italiano ho deciso di
farvi un esempio semplificato del mio problema.
for icont=0 to 100
	progressbar.value=progressbar.value+1
next icont
il problema è quesot che la barra non viene mostrata in progressione
man mano che il ciclo va avanti ma viene mostrata solo alla fine del
ciclo e completa.
come si può risolvere questo problema?
grazie x l'aiuto
p.s. magari oltre a postare le risposte sull'ng postatele anche alla
mia e-mail 
cagn...@libero.it
ciao.

grazie x l'aiuto
Ma la inizializzi a value = 0 ?
Ettore

certo


 ciclo e completa.
La ProgressBar, per lo meno quella dei Common Controls 6, si ridisegna
automaticamente ogni volta che aggiorni il Value, per cui in questo caso
ProgressBar1.Refresh non serve (anzi e' dannoso perche' produce un
bruttissimo effetto).
Detto questo, ho il sospetto che il ciclo sia semplicemente troppo veloce;
gia' su un "vecchio" PII 233 e' quasi istantaneo, non l'ho provato
sull'Athlon 1Ghz ma mi immagino... se provi con 1000 iterazioni vedrai che
si comporta correttamente, per cui forse non ti resta che aggiungere un
piccolo delay tra un iterazione e l'altra:
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
for icont=0 to 100
    progressbar.value=progressbar.value+1
    Sleep 5 'oppure 10-20
next icont
Ciao
--
Luca Dormio
luca....@tin.it

> il problema č quesot che la barra non viene mostrata in progressione


 next icont
Beh...
Se non hai gli occhi bionici sarà bene che ti faccia fare qualcos'altro nel
ciclo altrimenti é solo perché é troppo veloce... :)
Ti do anche un congiglio OT:
I SUBJECT!!!!!!
Mannaggia... prova a leggere il manifesto sul sito comune...
Questo é un messaggio di risposta standard e quindi impreciso, viene inviato
in genere a chi si é da poco affacciato al NG e potrebbe non contenere le
risposte in maniera diretta...
1)  Controlla il subject! Subject tipo: "Aiutooooo", "!!!", "Non ci sto più
dentro", "Sto impazzendo" sono subject che vengono filtrati da quasi
tutti... (Escluso il sottoscritto ancora per un po') e quindi non vengono
nemmeno letti dal 90% dei partecipanti (forse meno, ma comunque tanti)
2) Prima di postare sul NG sarebbe bene seguire un certo iter:
    a) Cercare nell' Help (alias MSDN ove possibile)
    b) Cercare nei vecchi post... Se ne hai pochi... non c'é problema, qui
ci sono quelli degli ultimi 6 anni (circa):
 
http://groups.google.com/advanced_group_search
    c) Cercare sul sito comune 
http://www.it-lang-vb.net
...Comunque almeno i post vecchi, MSDN e il subject sono vitali...
                        Ciao
                                Allanon

 ha scritto nel messaggio
news:3ba1dfc...@news.libero.it...


 come si puň risolvere questo problema?


 Prova così!


 ciclo e completa.
Se DEVI proprio usare un ciclo for allora i consigli di Simone Ettore etc.
vanno più che bene(anzi mi hanno detto cose che non sapevo). Però se fossi
in te eviterei di usare tale ciclo. Io già col mio
vecchiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiissimo P100 non riuscivo a far mostrare
sotto programma l'avanzamento del ciclo. Ed allora perché complicarsi la
vita? Usa un controllo timer e mettici dentro un codice tipo questo :
                if progessbar1.value=10 then exit sub 'se è dieci il valore
max del prgbar
                ProgressBar1.Value = ProgressBar1.Value + 1
Se poi per motivi che non conosco sei costretto ad usare il for allora segui
gli ottimi consigli degli altri che t'hanno risposto.
Ciao, Peppe


niente compare solo e sempre alla fine anche se però con il delay ci
mette + tempo.

ragazzi cmq il mio ciclo non è composto solo da 1 riga ma da una 20ina
di righe di codice che non hanno niente a che fare con questa progress
bar, cmq come ho già detto nel mio precedente messaggio quando un
ciclo inizia prende tipo il sopravvento su tutte le altre cose. fatemi
sapere.
On Fri, 14 Sep 2001 10:51:55 GMT, 
eldardi...@hotmail.com
 (Eldar -
Ettore - Dice) wrote:



wrote:


 farvi un esempio semplificato del mio problema.
Ma ragazzi (mi riferisco a chi ti ha risposto), ma state tutti dormendo???
:PPP
L'unico che ha azzeccato il problema è Nomade: in un ciclo chiuso la CPU
(che sia un 286 o un Pentium5 2.5GH è lo stesso) non ha il tempo di
rinfrescare il video!
Una Sleep non può che peggiorare le cose.
Anche Luca però dice una cosa giusta: la progressbar dei common controls si
auto aggiorna.
Quindi probabilmente non ha usato questa.
Per inciso:
for icont=0 to 100
    progressbar.value=progressbar.value+1
next icont
Sarebbe meglio
for icont=0 to 100
    progressbar.value = icon
next icont

 come si puň risolvere questo problema?


> come si può risolvere questo problema?


Robby ha scritto:
[snip di un testo di 3 righe di risposta e 31 di quote inutile]
Innanzi tutto, penso tu abbia fatto bene a ringraziare chi ti ha aiutato :-)
Nella foga, pero', ti sei dimenticato di segare via il testo inutile.
Vabbe', succede tutti, anche me :-(
ciao, hal

 auto aggiorna.
[SNIP]
Appunto... quindi anche se il ciclo e' molto chiuso il problema della CPU
non si pone; in questo caso il problema e' proprio il contrario: il ciclo e'
troppo rapido per poter vedere in maniera apprezzabile l'avanzamento, e
l'effetto e' una progressbar gia' "piena"
Fidati, se provi il ciclo che hai scritto
for icont=0 to 100
    progressbar.value = icon
next icont
su una CPU mediamente veloce, lo vedi schizzare in fondo... aggiungendo uno
Sleep *minimo* (cioe' 5-10 ms, timing di Windows permettendo) hai un lieve
rallentamento che pero' da un effetto estetico migliore.
Se metti un DoEvents come suggerito da Nomade in un ciclo *esattamente
uguale* a quello qui sopra il refresh e' doppio e l'effetto ottenuto e' uno
sgradevole "flickering"; la questione pero' e' che, come faceva notare
qualcun'altro, sicuramente il ciclo contiene altro codice, per cui alla fine
i refresh sono piu' lontani uno dall'altro e non fastidiosi.
Resta il fatto che la progress bar standard non dovrebbe soffrire si questo
comportamento...
Ciao
--
Luca Dormio - 
luca....@tin.it
________________________________
"Marty, non stai ragionando in maniera quadridimensionale"
Dr. Emmett Brown

 ha scritto nel messaggio
news:3ba1dfc...@news.libero.it...
