Como detener e iniciar cronometro

Estoy haciendo un cronometro de cuenta regresiva en un formulario de access, quiero ponerle un botón de comando que al hacer clic con el ratón se detenga el cronometro y que al volver a hacer clic se ponga en marcha con los mismos minutos y segundos que se paro.
En el formulario tengo el siguiente código:
Option Compare Database
Dim TiempoRestante As Date
Dim Horafinal As Date
Dim Horainicio As Date
Option Explicit
Private Sub Form_Load()
    Reset.Enabled = False
    Etiqueta1.Caption = "00 : 01 : 00"
End Sub
Private Sub Form_Timer()
    TiempoRestante = Horafinal - Time
    Etiqueta1.Caption = Format(TiempoRestante, "hh : nn : ss")
    If Etiqueta1.Caption = "00 : 00 : 00" Then DoCmd.Close
End Sub
Private Sub Comenzar_Click()
    Reset.Enabled = True: Reset.SetFocus: Comenzar.Enabled = False
    Horainicio = Time
    'El numero indica los minutos desde los que comenzará
'la cuenta atrás (60 min. = 1 hora)
    Horafinal = DateAdd("n", 1, Now)
    TimerInterval = 1000
End Sub
Private Sub Reset_Click()
    Comenzar.Enabled = True: Comenzar.SetFocus: Reset.Enabled = False
    Form_Load
    TimerInterval = 0
End Sub

3 respuestas

Respuesta
1
Una Opción es poner un botón Parar +/- así
Private Sub Parar_Click()
    Comenzar.Enabled = True: Comenzar.SetFocus: Parar.Enabled = False
    TimerInterval = 0
End Sub
Esta opción lo que hace es detener el cronometro, cosa que ya me lo hacia, yo lo que quiero es por ejemplo:
Se para el cronometro en 00:00:40 y que al empezar de nuevo vaya descontando los se- gundos desde donde se a paradado desde 40 segundos, porque la opción que me dices lo que hace es parar el cronometro y se vuelve a iniciar desde el principio.
Espero tu contestación.
Muchas gracias.
Tienes razón fue un error, te envío esta segunda opción:
If TimerInterval = 0 Then
       Horafinal = Horafinal + (Time - HoraPausa)
       TimerInterval = 1000
       Parar.Caption = "Parar"
    Else
        HoraPausa = Time
        TimerInterval = 0
        Parar.Caption = "Reiniciar"
    End If
Respuesta
1
A partir de tu pregunta me puse a probar (desde cero) y confeccioné un cronómetro con hora, minutos, segundos y centésimas de segundo. Con dos botones: Iniciar y Parar que al parar lo podes continuar y al hacer doble clic en para lo ponés en cero de nuevo.
Si te sirve, dejame tu mail y te lo envío para que veas cómo lo hice.
Hola:
Mi mail es
[email protected]
Saludos.
Ahora te lo mando, por si a caso, porque me acabo de dar cuenta que la solución a tu pregunta es mucho más simple de lo que pensaba.
Para parar el cronómetro, en el código del botón ponés:
Me.TimerInterval = 0
y para continuarlo:
Me.TimerInterval = 1000
Hola:
El cronometro que quiero yo es que vaya para atrás como en baloncesto, que yo le ponga por ejemplo 00:10:00 y que vaya quitándole segundos 00:09:59, 00:09:58 y que cuando lo detenga que continué descontando desde donde lo haya parado por ejemplo:
Lo detengo en 00:08:40, hacer un botón de continuar desde 00:08:40 y no desde 00:10:00.
Lo que quiero hacer es un cronometro para baloncesto que vaya para atrás y que cuando lo detenga y lo vuelva a poner en marcha que continué desde donde lo he parado.
Te he mandado por mail los dos cronómetros que he hecho, en el normal veras que si que se puede hacer lo que yo quiero, pero en el reloj marcha atrás no se como lo tengo que hacer.
Saludos:
Listo! Modificado y enviado al mail...
Respuesta
1
1. No pongas Dim fuera de un Sub o Function, no funcionará y además es una atrocidad. Si necesitas variables en un formulario que sean de acceso para todos los Subs o Function del mismo, crea un control, dale un nombre y haz que no sea visible, o en ultima instancia crea una variable Global
2. Crea una variable como te he dicho antes, y cada vez que le des al botón lea de esa variable, para saber lo que tiene que hacer, es decir, invéntate los valores de la variable para que el programa hágalo que tenga que hacer. Por ejemplo, cuando la variable sea 1, el cronómetro seguirá contando donde se quedó, si es 0 contará desde cero, ...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas