Pagina 1 di 5 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 41
  1. #1
    Utente di HTML.it L'avatar di lyllo
    Registrato dal
    Apr 2001
    Messaggi
    832

    [delphi] Riempire una progress bar con animazione

    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.

  2. #2
    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..

  3. #3
    Utente di HTML.it L'avatar di lyllo
    Registrato dal
    Apr 2001
    Messaggi
    832
    si il problema è centrato,
    solo che a me serve che si fermi in un punto specifico che non necessariamente è il MaxValue...

  4. #4
    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..

  5. #5
    Utente di HTML.it L'avatar di lyllo
    Registrato dal
    Apr 2001
    Messaggi
    832
    no vorrei semplicemente che salga da 10 a 70, per esempio, in modo "animato"

  6. #6
    metti questo codice nell'evento on timer

    if progressbar.position<70 then
    progressbar.position:=progressbar.position+1;

  7. #7
    Utente di HTML.it L'avatar di lyllo
    Registrato dal
    Apr 2001
    Messaggi
    832
    ok provo e ti faccio sapere,
    grazie

  8. #8
    Originariamente inviato da MrCocò85
    metti questo codice nell'evento on timer

    if progressbar.position<70 then
    progressbar.position:=progressbar.position+1;
    Sapendo che viene usato un TTimer, a mio avviso conviene fermare proprio questo componente, disabilitando quindi l'avanzamento della
    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 :
    codice:
     
       Timer.Enabled := progressbar.position < 70;
       Inc(progressbar.position);
    E successivamente usare un pulsante che ha la funzione di resettare il contatore e la barra di progressione:

    codice:
     
    procedure TForm1.Reset;
    begin  
      progressbar.position := 0;
      Timer.Enabled := True;
    end;

  9. #9
    Utente di HTML.it L'avatar di lyllo
    Registrato dal
    Apr 2001
    Messaggi
    832
    ho provato ma non funziona

    il riempimento è sempre istantaneo

  10. #10
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301
    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...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.