Tempo restante progressbar

Delphi

09/02/2009

Boa tarde, pessoal !!! Eu tive uma dificuldade enorme de encontrar algo que mostrasse o tempo restante de uma progressbar. Dai fui misturando alguns códigos que encontrei na internet e consegui um resultado até satisfatório. Então vou postar aqui a solução se caso alguém estiver com a mesma dificuldade. Não é lá aquelas coisas, mas funcionou bem para mim.

    Prog: TProgressBar;
    Timer1: TTimer;
  private
    { Private declarations }
    StartTime: TDateTime;

procedure TForm1.Button1Click(Sender: TObject);
begin
   StartTime := now;
   Timer1.Enabled := true;
   {Processo com a progressbar}
   Timer2.Enabled := false;
  
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
   TotalTime: TDateTime;
   H, M, S, MS, EstTime: word;
begin
   TotalTime := Now-StartTime;
   DecodeTime(TotalTime, H, M, S, MS);
   S := S + M*60 + H*3600;

   EstTime := Trunc((S/(Prog.Position/Prog.Max)-S));
   Label2.Caption := Format(´¬.2d:¬.2d:¬.2d´, [EstTime div 3600, (EstTime div 60) mod 60, EstTime mod 60]);
end;


Nem eu sei como eu cheguei nesse cálculo... só sei q funcionou. A única coisa é que em processos longos o tempo vai almentando, mas ele estabiliza e depois vai diminuindo conforme o andamento. Se alguém tiver alguma melhoria para o código fique a vontade...


Jrinfo2005

Jrinfo2005

Curtidas 0
POSTAR