CRONOMETRO

FLAVIORC 19/08/2016 18:07:28
#465990
Amigos,

Estou tentando fazer um cronometro em um Form para marcar o tempo decorrido de uma rotina, porém, não estou conseguindo. O objetivo e deixar o Form visível e contando o tempo enquanto a rotina é feita.

é possível? Alguém pode dar uma ideia?

Obrigado!
FABRICIOWEB 19/08/2016 18:32:59
#465992
Qual e exatamente a rotina?
FLAVIORC 19/08/2016 19:29:39
#465995
Bem, a rotina já está pronta. Ela faz uma busca em outra planilha e atualiza a planilha atual com as informações encontradas, um procv. Mas quero utilizar este cronometro para qualquer outra rotina. Eu consigo ativar o Form e iniciar a contagem, porem, não faz a pesquisa em paralelo.
KERPLUNK 20/08/2016 00:26:07
#466017
Você vai fazer mais ou menos como está fazendo. Abrir o form e iniciar a contagem. Na rotina que quer cronometrar, você vai atualizando o valor do cronômetro e usando o comando DoEvents, para que a tela seja atualizada.
Para fazer essa atualização do valor de label é mais ou menos assim:

Sheets([Ô]NomeDaAbaDoForm[Ô]).Shapes([Ô]NomeDoLabel[Ô]).TextFrame.Characters.Text = tempoDecorrido


A variável [Ô]tempoDecorrido[Ô], é criada no início do seu procedimento e vai sendo incrementada com a hora atual, subtraída da hora início que é o valor inicial da variável.
SIRIOUS 22/08/2016 12:02:13
#466070
Tempos atrás, projetei um aplicativo que fechava automaticamente em 05 min de inatividade (para evitar, p.ex., algum dano à base de dados, caso caisse a energia elétrica). Procurei ajuda aqui mesmo no forum, e montei as rotinas abaixo. P. ex., se o usuário simplesmente abrisse o programa e o deixasse na tela, após 05 minutos, ele seria descarregado (fechando a base de dados, em evento associado ao comando <Unload>). Porém, a qualquer instante, o usuário poderia retomar a contagem dos 05 minutos, bastando mexer no mouse. Por fim, um label (labelTempo) informava ao usuário, em tempo real, a contagem regressiva para o encerramento do aplicativo...

[ô]NOTA: O formulário ficará aberto por 5 minutos. Após, será fechado automaticamente, salvo ‘se o usuário movimentar o mouse pelo form. Nesse caso, o tempo retorna [ô]aos cinco minutos ‘iniciais. Cada movimento do mouse implica em retorno automático do tempo (vide evento ‘MouseMove do form).

Private Sub tmrTempo_Timer()
If Tempo = CDate([Ô]00:00:00[Ô]) Then
Unload frmListadeFilmes
Unload frmExibeFoto
Unload frmAjudaProcura
FrmFilmes.Show
MsgBox [Ô]Tempo esgotado ...[Ô] & vbNewLine & _
[Ô]Para voltar, clique em [Ô] & vbNewLine & _
[Ô]<consultas> novamente ...[Ô], 64
Else
Tempo = TimeValue(Tempo) - TimeValue([Ô]00:00:01[Ô])
lblTempo.Caption = [Ô]Encerra em [Ô] & Format(Minute(Tempo), [Ô]00[Ô]) & [Ô]:[Ô] & Format(Second(Tempo), [Ô]00[Ô] & [Ô] min[Ô])
lblTempo.Visible = True
Exit Sub
End If
End Sub


Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Tempo = [Ô]00:05:00[Ô]
End Sub

Propriedades do Timer:
Interval = 990 (aprox. 1 min).

Faça seu login para responder