Vamos agora abordar a solução usando uma outra técnica, mais apurada,sem fazer uso de componentes TTimer.
Desenvolva a seguinte função:
function TfrmPrincipal.GerarTimer(Tipo: Integer; Data:TTime): String;
var
iData1, iData2: String;
begin
{:Tipo = 0 -> Regressivo Tipo = 1 -> Progressivo}
iData1 := TimeToStr(Data);
if (Tipo = 0) then
iData2 := TimeToStr((StrToTime(iData1) - StrToTime('00:00:01')))
else
if Tipo = 1 then iData2 := TimeToStr((StrToTime(iData1) + StrToTime('00:00:01')));
iData1 := iData2;
Result := iData1;
end;
Agora coloque no seu formulário um componente TMaskEdit(txtTempo: EditMask = '!00:00:00;1;_')
e um TButton(btnGerarContagem: Caption = 'Iniciar Processo'), e no evento OnClick deste, digite:
{:Para processo regressivo - informamos o tempo final como '00:00:00'
Informe então um valor em txtTempo.text(valor de sua escollha, ex: '00:10:15') quando rodar a aplicação)
while (txtTempo.Text <> '00:00:00') do
begin
txtTempo.Text := GerarTimer(0, StrToTime(txtTempo.Text));
Sleep(1000);
Application.ProcessMessages;
end;
Para processo progressivo basta agora colocar o valor de tempo futuro onde o processo terminará,não esquecendo de usar o parâmetro 1 em Tipo:
{:Para processo progressivo - informamos o tempo final(valor de sua escollha, ex: '00:10:15')
quando rodar a aplicação - veja abaixo)
while (txtTempo.Text <> '00:10:15') do
begin
txtTempo.Text := GerarTimer(1, StrToTime(txtTempo.Text));
Sleep(1000);
Application.ProcessMessages;
end;
Espero ter ajudado e até a próxima. Compartilhar é também ganhar...