Timer com Stop/Star?
Boa noite colegas
Existe algum componente Timer com recursos adicionais ao nativo do delphi como, por exemplo, funções para parar e iniciar seu contador sem resetar/zerar?
O que preciso não é o que o Enabled do TTimer faz, pois o Enabled do TTimer reseta/zera o contador. Eu gostaria que durante seu intervalo pudesse parar para fazer alguma ação e, em seguida, iniciar do ponto em que parou, sem resetar;
Por exemplo, se seu intervalo é de 60 segundos e o Timer tivesse contado até 45 seg e, nesse momento fosse necessária uma ação, eu gostaria de parar ele, fazer a ação e iniciar a partir dos segundos já computados, ou seja, a partir dos 45 segundos.
Dicas sobre como implementar esse recurso no TTimer ou sobre outros componentes do tipo Timer são bem-vindas
Agradeço antecipadamente por qualquer ajuda
Abraços
Delmar
Existe algum componente Timer com recursos adicionais ao nativo do delphi como, por exemplo, funções para parar e iniciar seu contador sem resetar/zerar?
O que preciso não é o que o Enabled do TTimer faz, pois o Enabled do TTimer reseta/zera o contador. Eu gostaria que durante seu intervalo pudesse parar para fazer alguma ação e, em seguida, iniciar do ponto em que parou, sem resetar;
Por exemplo, se seu intervalo é de 60 segundos e o Timer tivesse contado até 45 seg e, nesse momento fosse necessária uma ação, eu gostaria de parar ele, fazer a ação e iniciar a partir dos segundos já computados, ou seja, a partir dos 45 segundos.
Dicas sobre como implementar esse recurso no TTimer ou sobre outros componentes do tipo Timer são bem-vindas
Agradeço antecipadamente por qualquer ajuda
Abraços
Delmar
Delmar
Curtidas 0
Respostas
Delmar
11/05/2009
subir
GOSTEI 0
Discorpio
11/05/2009
Bom dia Delmar.
Bom, eu não conheço nenhum componente do qual voce especificou, entretanto, é muito simples de implementar o que voce deseja:
1º) Dentro do bloco Private ou Public da Classe do Form, declare uma variável ´Min´ ou ´Minuto´ ou o nome que preferir, que seja do tipo TTime, assim:
Coloque um TEdit e Tres TButtons no Form, com os seguintes Captions ´Iniciar´, ´Parar´ e ´Zerar Cronômetro´.
Ainda no Evento OnShow do Formulário voce vai disparar o Click do Botão ´Zerar Cronômetro´, para configurar esse evento, selecione o Form no IDE Designer do Delphi e tecle F11 para invocar o Object Inspector e na aba Events selecione o evento OnShow, dê dois clicks dentro de sua caixa combo e ele automaticamente escreverá o escopo da procedure. Enfim, todo esse código ficará assim:
Repare que o valor do cronômetro sempre ficará armazenado na variável ´Min´ declarada por nós como TTime e de visibilidade privada na Unit e que só será zerada no momento em que voce clicar em zerar o cronômetro.
Bom, eu não conheço nenhum componente do qual voce especificou, entretanto, é muito simples de implementar o que voce deseja:
1º) Dentro do bloco Private ou Public da Classe do Form, declare uma variável ´Min´ ou ´Minuto´ ou o nome que preferir, que seja do tipo TTime, assim:
private
{ Private declarations }
Min: TTime;
public
{ Public declarations }
end;
Coloque um TEdit e Tres TButtons no Form, com os seguintes Captions ´Iniciar´, ´Parar´ e ´Zerar Cronômetro´.
Ainda no Evento OnShow do Formulário voce vai disparar o Click do Botão ´Zerar Cronômetro´, para configurar esse evento, selecione o Form no IDE Designer do Delphi e tecle F11 para invocar o Object Inspector e na aba Events selecione o evento OnShow, dê dois clicks dentro de sua caixa combo e ele automaticamente escreverá o escopo da procedure. Enfim, todo esse código ficará assim:
procedure TForm1.btnStartClick(Sender: TObject); begin Timer1.Enabled := True; end; procedure TForm1.btnStopClick(Sender: TObject); begin Timer1.Enabled := False; end; procedure TForm1.btnResetClick(Sender: TObject); begin Min := StrToTime(´00:00:00´); Edit1.Text := TimeToStr(Min); end; procedure TForm1.FormShow(Sender: TObject); begin btnReset.Click; end; procedure TForm1.Timer1Timer(Sender: TObject); begin Min := Min + StrToTime(´00:00:01´); Edit1.Text := TimeToStr(Min); end;
Repare que o valor do cronômetro sempre ficará armazenado na variável ´Min´ declarada por nós como TTime e de visibilidade privada na Unit e que só será zerada no momento em que voce clicar em zerar o cronômetro.
GOSTEI 0