Timer com Stop/Star?

Delphi

11/05/2009

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


Delmar

Delmar

Curtidas 0

Respostas

Delmar

Delmar

11/05/2009

subir


GOSTEI 0
Discorpio

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:

    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
POSTAR