Contagem Regressiva
Galera, preciso da ajuda de vocês mais uma vez...
Como criar uma contagem regressiva com um timer pra quando acabar 30 minutos ele executar o comando desejado?
Como criar uma contagem regressiva com um timer pra quando acabar 30 minutos ele executar o comando desejado?
Delphitotal
Curtidas 0
Respostas
Rodc
26/07/2006
Não seria usando um TTimer com o intervalo de 30000 (30min)?
GOSTEI 0
Delphitotal
26/07/2006
sim isso eu sei .. mais como fazer a contagem regressiva?
eu não sei :(
eu não sei :(
GOSTEI 0
Delphitotal
26/07/2006
acho que não entenderam ...
tem um StatusBar que recebe o seguinte:
Tempo: 00:00:00
dai quero fazer uma contagem regressiva pra aparecer em tempo real no StatusBar no ´00:00:00´.
Se alguem puder ajudar..
tem um StatusBar que recebe o seguinte:
Tempo: 00:00:00
dai quero fazer uma contagem regressiva pra aparecer em tempo real no StatusBar no ´00:00:00´.
Se alguem puder ajudar..
GOSTEI 0
Rodc
26/07/2006
Coloca um TTimer com intervalo de 1000 (1seg).
Cria uma variável global do tipo TTime que deve iniciar com o horário atual mais 30 minutos.
No evento do Timer coloca:
Cria uma variável global do tipo TTime que deve iniciar com o horário atual mais 30 minutos.
var_horafinal = Time() + StrToTime("00:30");No evento do Timer coloca:
Label1->Caption = TimeToStr(var_horafinal - Time()); if (Time() > var_horafinal) then begin Timer1.Enabled = false; ShowMessage(´Acabou o tempo´); end;
GOSTEI 0
Delphitotal
26/07/2006
Pô rodc vlw irmão ... estou a dias atras disso .
Vlw mesmo!!
Vlw mesmo!!
GOSTEI 0
Delphitotal
26/07/2006
Tenho uma duvida .. com o mesmo código como eu poderia fazer com 80 minutos?
GOSTEI 0
Rodc
26/07/2006
80 minutos é 1 hora e 20 minutos.
No lugar do ´00:30´ você coloca ´01:20´;
:wink:
No lugar do ´00:30´ você coloca ´01:20´;
:wink:
GOSTEI 0
Delphitotal
26/07/2006
tpo eu sei .. mais assim ele mostra 1 hora e 20 minutos ...
não teria como mostra tpo
79:59
79:58
79:57
79:56
enfim... da pra fazer só em minutos?
não teria como mostra tpo
79:59
79:58
79:57
79:56
enfim... da pra fazer só em minutos?
GOSTEI 0
Rodc
26/07/2006
Declare as variáveis hor, min, seg e mseg como inteiro.
Não testei, mas acho que vai funcionar.
DecodeTime(var_horafinal - Time(), hor, min, seg, mseg); min := min + hor * 60; if (seg < 10) then Label1.Caption = IntToStr(min) + ":0" + IntToStr(seg) else Label1.Caption = IntToStr(min) + ":" + IntToStr(seg);
Não testei, mas acho que vai funcionar.
GOSTEI 0
Delphitotal
26/07/2006
cara não consegui fazer esse código funcionar .. fiz aqui mais deu varios numeros muito elevados .. :(
GOSTEI 0
Rodc
26/07/2006
As variáveis passadas para o DecodeTime devem ser do tipo WORD, não do tipo inteiro. Testei aqui e isto resolveu.
GOSTEI 0
Delphitotal
26/07/2006
rodc funcionou!
vlw!! por tudo ..
vlw!! por tudo ..
GOSTEI 0
Micheus
26/07/2006
[b:57e382933f]rodc[/b:57e382933f], caso haja a possibilidade deste tempo ocorrer numa mudança de dia, tipo das 23:40 às 00:10hs, acredito que não funcionará.
Para esta situação sugiro que vc faça algo como:
Onde var_horafinal seria declarada como TDateTime.
Para esta situação sugiro que vc faça algo como:
var_horafinal = Now() + StrToTime("00:30");var DifHora :TDateTime; begin DifHora := (var_horafinal -Now) *24; // obtém diferença em horas Label1.Caption := FormatFloat(´#00:´, DifHora)+FormatFloat(´00´, Frac(DifHora) *60); if (DifHora <= 0) then begin Timer1.Enabled = false; ShowMessage(´Acabou o tempo´); end; end;
GOSTEI 0
Delphitotal
26/07/2006
micheus, vlw pelo código ... mais seu código não mostra os segundos ..
teria como vc arrumar isso?
teria como vc arrumar isso?
GOSTEI 0
Micheus
26/07/2006
[b:cda9572f02]delphitotal[/b:cda9572f02], por favor corrija para a seguinte formaO código exemplo anterior, também tinha um ´bug´. Havia faltado o [i:cda9572f02]Int[/i:cda9572f02] na parte que formata a hora, o que resultava em arredondamento - indesejado.
var DifHora :TDateTime; begin DifHora := (var_horafinal -Now) *24; // obtém diferença em horas Label1.Caption := FormatFloat(´#00:´, Int(DifHora)) +FormatDateTime(´nn:ss´, Frac(DifHora)/24); if (DifHora <= 0) then begin Timer1.Enabled = false; ShowMessage(´Acabou o tempo´); end; end;
GOSTEI 0