salve a tutti,
mi chiedevo come si potesse fare per riempire una progressbar invece che istantaneamente, gradualmente una posizione alla volta fino al valore imposto ad esempio da position:=10; a position:=70.
grazie.
salve a tutti,
mi chiedevo come si potesse fare per riempire una progressbar invece che istantaneamente, gradualmente una posizione alla volta fino al valore imposto ad esempio da position:=10; a position:=70.
grazie.
se ho capito bene tu vuoi che la progress bar di incrementi da solo,quindi se così è ti serve un ttimer;nell'evento on timer basta che scrivi una cosa del genere:
progressbar.position:=progressbar.position+1;
spero di aver centrato il problema..
si il problema è centrato,
solo che a me serve che si fermi in un punto specifico che non necessariamente è il MaxValue...
metti al condizione nell'evento on timer
if progressbar.position=50 then
progressbar.position:=0
else
progressbar.position:=progressbar.position+1;
questo codice aumenta la progress bar fino a quando non arriva la valore 50 dopodichè torna a 0 e ricomincia..
no vorrei semplicemente che salga da 10 a 70, per esempio, in modo "animato"
metti questo codice nell'evento on timer
if progressbar.position<70 then
progressbar.position:=progressbar.position+1;
ok provo e ti faccio sapere,
grazie
Sapendo che viene usato un TTimer, a mio avviso conviene fermare proprio questo componente, disabilitando quindi l'avanzamento dellaOriginariamente inviato da MrCocò85
metti questo codice nell'evento on timer
if progressbar.position<70 then
progressbar.position:=progressbar.position+1;
progressbar.
Non ha senso fare continuare un contatore quando non occorre più incrementare il valore della barra di progressione, ci sarebbe solo uno spreco di risorse (anche se pur irrilevante...).
Quindi :
E successivamente usare un pulsante che ha la funzione di resettare il contatore e la barra di progressione:codice:Timer.Enabled := progressbar.position < 70; Inc(progressbar.position);
codice:procedure TForm1.Reset; begin progressbar.position := 0; Timer.Enabled := True; end;
ho provato ma non funziona
il riempimento è sempre istantaneo
Senza usare un TTimer, il riempimento è sempre istantaneo poichè ottenuto con un ciclo, il refresh del controllo ProgressBar viene effettuato solo al termine di tale ciclo, mostrando solo lo stato finale.
Si dovrebbe richiamare il metodo Update del controllo ProgressBar ad ogni ciclo, oppure usare un TTimer come già suggerito, ovviamente con un tempo Interval adeguato.
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...