Tempo restante progressbar
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.
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...
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
Curtidas 0