Compartir a través de


Realizar acciones específicas a intervalos regulares

El control Timer permite realizar acciones o comprobar valores a intervalos específicos.

Usar el control Timer

Los controles Timer responden al paso del tiempo independientemente de la interacción con el usuario, de modo que pueden programarse para que realicen acciones a intervalos regulares. Suelen emplearse para comprobar el reloj del sistema y ver si es hora de llevar a cabo una determinada tarea. Los cronómetros también resultan útiles para otros tipos de procesamiento en segundo plano.

Para ver ejemplos del uso de cronómetros

  1. Ejecute Solution.app en el directorio …\Samples\Solution de Visual FoxPro.
  2. En la vista de árbol, haga clic en Controles y a continuación, en Temporizador.

Cada cronómetro tiene una propiedad Interval, que especifica el número de milisegundos que transcurren entre un evento de cronómetro y el siguiente. A menos que se deshabilite, un cronómetro continúa recibiendo un evento (denominado Timer) a intervalos de tiempo aproximadamente iguales. La propiedad Interval tiene algunas limitaciones que deben tenerse en cuenta cuando se programa un cronómetro:

  • El intervalo puede estar entre 0 y 2.147.483.647, inclusive, lo que significa que el intervalo más largo es de unas 596,5 horas (más de 24 días).
  • No se garantiza que el intervalo tenga una duración exacta. Para asegurar la precisión, el cronómetro debe comprobar el reloj del sistema cuando lo necesita, en lugar de intentar realizar un seguimiento interno del tiempo acumulado.
  • El sistema genera 18 impulsos de reloj por segundo por lo que, aunque la propiedad Interval se mide en milisegundos, la precisión real de un intervalo no es superior a la decimoctava parte de un segundo.
  • Si su aplicación u otra distinta sobrecarga el sistema (por ejemplo, a través de bucles largos, cálculos intensivos o acceso al disco, a la red o al puerto), es posible que la aplicación no obtenga eventos de Timer con la frecuencia que especifica la propiedad Interval.

Colocar un control Timer en un formulario

Colocar un control Timer en un formulario es como dibujar cualquier otro control: se elige la herramienta de cronómetro en la barra de herramientas Controles de formularios y se arrastra a un formulario.

Un control Timer

El cronómetro aparece en el formulario en tiempo de diseño de forma que puede seleccionarlo, ver sus propiedades y escribir un procedimiento de evento para el mismo. En tiempo de ejecución, el cronómetro es invisible y su posición y tamaño son irrelevantes.

Inicializar un control Timer

Un control Timer tiene dos propiedades clave.

Propiedad Valor
Enabled Si desea que el cronómetro comience a funcionar en cuanto se cargue el formulario, establézcala en verdadero (.T.). De lo contrario, deje esta propiedad establecida en falso (.F.). Puede elegir un evento externo (como un clic en un botón de comando) para que se inicie la operación del temporizador.
Interval Número de milisegundos entre los eventos del cronómetro.

Observe que la propiedad Enabled del cronómetro es distinta que la de otros objetos. Con la mayoría de los objetos, la propiedad Enabled determina si el objeto puede responder o no a un evento causado por el usuario. Con el control Timer, al establecer Enabled a falso (.F.) se suspende el funcionamiento del cronómetro.

Recuerde que el evento Timer es periódico. La propiedad Interval no determina “cuánto tiempo”, sino más bien “con qué frecuencia”. La duración del intervalo debe depender de la precisión que desee. Puesto que existen posibilidades inherentes de error, cree el intervalo con la mitad de la precisión deseada.

Nota   Cuanto más frecuentemente se genere un evento de cronómetro, más tiempo de procesador se consumirá para responder al evento. Esto puede hacer más lento el rendimiento global. No establezca un intervalo excesivamente pequeño a menos que lo necesite.

Responder al evento Timer

Cuando transcurre el intervalo del control Timer, Visual FoxPro genera el evento Timer. La respuesta a este evento suele consistir en comprobar alguna condición general, como el reloj del sistema.

Un reloj digital es una aplicación muy sencilla pero de gran utilidad que interviene en un control Timer. Cuando comprenda cómo funciona la aplicación, podrá mejorarla para que funcione como un despertador, un cronómetro u otro dispositivo de temporización.

La aplicación de reloj digital incluye un cronómetro y una etiqueta con un borde. En tiempo de diseño, la aplicación tiene esta apariencia:

La aplicación reloj digital

En tiempo de ejecución, el cronómetro es invisible.

Control Propiedad Valor
LblTime Caption  
Timer1 Interval 500 (medio segundo)
Timer1 Enabled Verdadero

El único procedimiento de la aplicación es el procedimiento de evento Timer:

IF THISFORM.lblTime.Caption != Time()
   THISFORM.lblTime.Caption = Time()
ENDIF

La propiedad Interval del cronómetro está establecida a 500, siguiendo la regla de establecer el intervalo en la mitad del período más corto que desea distinguir (en este caso, un segundo). Esto puede hacer que el código del temporizador actualice la etiqueta con la misma hora dos veces en un segundo. Esto podría producir un parpadeo visible, por lo que el código comprueba si la hora es distinta de lo que aparece en la etiqueta antes de cambiar el título.

Vea también

Realizar acciones específicas a intervalos regulares | Mostrar información | Usar controles | Mejorar la presentación de controles | Controles y objetos