ProgramasVb6
  Timer
 

El control Timer es un temporizador que nos permite ejecutar instrucciones de código, rutinas, funciones etc..., cada cierto intervalo de tiempo.

Este control es invisible en tiempo de ejecución, esto quiere decir que no tiene interfaz gráfica, solo es visible cuando lo agregamos a un formulario y estamos en modo de diseño .

La propiedad mas importante de este control es la propiedad Interval

 

Definición del propiedad Interval:

Devuelve o establece el número de milisegundos entre dos llamadas al evento Timer de un control Timer.

en castellano, esto quiere decir que la propiedad es la que determina el intervalo en el que ejecutará las instrucciones que estén en el evento llamado Timer, que es el único evento que posee el control

Por ejemplo, si agregás un Timer al formulario y le haces DobleClick sobre el mismo, al abrirse la ventana de código Visual Basic creará una rutina de evento como la siguiente:

 

Vista previa del Evento Timer del control Timer1

 

En ese procedimiento ( controlador de evento ) es donde debemos escribir las instrucciones que queremos que se ejecuten cada cierto intervalo de tiempo.

Antes de hacer un ejemplo, hay que aclarar que la propiedad Interval está expresada en milisegundos, esto quiere decir que por ejemplo si quisieramos ejecutar una instrucción cada 3 segundos por decir un ejemplo, la propiedad Interval debe estar en 3000, si quisiera ejecutarla cada 10 segundos en 10000 etc...

Otra cosa importante es que si la propiedad Interval se encuentra en 0, el procedimiento Timer no se producirá.

 

Ejemplo 1 - utilizando la propiedad Interval para mostrar la hora

Coloca un Timer llamado Timer1, seleccionalo, y desde la ventana de propiedades en la propiedad Interval coloca el valor 1000. O sea que el Timer1 se va a ejecutar cada 1 segundo.

Ahora coloca un control Label1 en el formulario y en la propiedad Autosize del control Label1 coloca True, esto hará que el control Label1 se ajuste al contenido del mismo. Lo que hará el ejemplo será mostrar la hora del sistema en el control de etiqueta

Entonces dale doble Click en el Timer1 para crear el procedimiento que se describió arriba que es el que ejecuta el Timer. y pega está instrucción

 

Label1.caption = Time

 

El código del procedimiento quedaría así:

 

Private Sub Timer1_Timer()

Label1.Caption = Time

End Sub

 

Ahora ejecuta el programa y podés ver como se actualiza el Label1 de acuerdo a la hora del sistema, usando claro la función Time de visual basic que devuelve la hora del sistema operativo.

Otra propiedad importante y que se utiliza mucho en este control es la propiedad Enabled. La propiedad enabled lo que hace eshabilitar o deshabilitar un control. Si está en True funciona, si está en False no funciona. Esta propiedad es común en la mayoría de los controles de visual basic.

 

Ejemplo 2 - para para ver el funcionamiento de la propiedad Enabled:

Coloca 2 controels CommandButton llamados cmdActivar y otro CmdDesactiva. También un control laabel llamado Label1 que mostrará igual que el ejemplo anterior la hora del pc usando la función Time de Visual basic, pero en este ejemplo lo que harán los botones es activar y desactivar el control Timer1, mediante la propiedad Enabled

Dale doble click en el CmdActivar, es decir en el CommandButtonm y coloca la siguiente instrucción para activar el Timer1

Timer1.Enabled = True

 

Ahora Doble click en el otro botón para escribir las instrucción para desactivar el Timer1 cuando hagamos click en el botón

 

Timer1.Enabled = False

 

Una cosa que es muy común es asignar la propiedad Interval en tiempo de ejecución, es decir, en ves de hacerlo desde el modo diseño desde la ventana de propiedades, se asignará el Interval en el evento Load del formulario. Esto quiere decir que, apenas cargue y arranque el formulario, el control Timer1 tendrá el Interval en 1000.

Ahora DobleClick en el Formulario para que se abra la ventana de código y Visual Basic te muestre el procedimiento del evento Load y coloca la siguiente línea:

 

Timer1.interval = 1000

 

De esta manera ya sabés que desde cualquier punto del programa, podés cambiar la propiedad interval para que el temporizador se ejecute de acuerdo a tus necesidades. Hay veces que esto no es necesario es decir se mantiene igual y constante y no es necesario cambiar el interval, pero otras (depende de lo que se quiera hacer) si lo es.

 

Ejemplo 3 - Cambiar el Interval en tiempo de ejecución

Este ejemplo no tiene ningún sentido práctico pero para practicar vale.

Coloca en el formulario una barra de Scroll horizontal llamada HScroll1. Seleccionala y en la ventana de propiedades busca la propiedad Max y Min. A Min dejale el valor por defecto que tiene, osea 0. A lapropiedad Max colocale 3000 . Luego coloca un control Label llamado Label1 y un Timer1. Al Label1 en la propiedad Caption agregale algún texto. El formulario tiene que ser algo por el estilo:

 

vista del formulario de ejemplo para modificar la propiedad Interval de los controles Timer

 

Lo que hace esto es, que al mover la barra de scroll, se le cambia el valor de la propiedad interval al Timer1. Osea cuando lo llevamos al mínimo está en 0 y cuando movemos el scroll hasta el máximo valor queda en 3000 (cada 3 segundos). El valor de la propiedad de la barra que es Value , se lo asignamos a la propiedad interval del timer. Dentro del Timer, hay una simple instrucción que lo que hace es lo siguiente: Si el control Label1 está visible, lo ponemos invisible, si está Invisible lo hacemos visible. Esto hace que el Label1 parpadee. Mientras menos sea el valor de la propiedad interval, mas rápido parpadeará el Label1, en cambio mientras mas alto sea el valor mas lento parpadeará el Label1.

Como dije esto no tiene ningún sentido, pero es para que veas como podés asignar a la propiedad interval, valores de otros controles, datos variables etc.... en tiempo de ejecución

 

Private Sub HScroll1_Change()
'Mostramos en la barra de titulo del form el valor del SCrollBar
Me.Caption = "Intervalo: " & HScroll1.Value & " milisegundos"

'Le colocamos el Interval al Timer, el valor de la barra (su propiedad Value)
Timer1.Interval = HScroll1.Value
End Sub

Private Sub HScroll1_Scroll()
HScroll1_Change
End Sub

Private Sub Timer1_Timer()
'Esta instrucción lo que hace es que si el Label1 está visible lo pone invisible
'Si está Invisible lo hace visible. Cambiando la propiedad Visible
'mediante el operador Not de Visual basic

Label1.Visible = Not Label1.Visible
End Sub

 

Ejemplo 4 - Crear una marquesina de texto

el siguiente ejemplo, cra una marquesina de texto que se desplaza a lo ancho del formulario utilizando nu control Label y por supuesto un Timer.

Coloca un control Frame en el formulario llamado Contenedor. Dentro del contenedor, es decir del Frame, coloca un Label1. Por último un control Timer llamado Timer1.

Desde el modo de Diseño debe verse mas o menos asi:

 

vista del modo diseño con el control Frame, el Timer, y el Label que se desplazará sobr el contenedor

 

 

Lo que está seleccionado, es el control Frame, el Label asegurate que esté dentro del Frame, de lo contrario no funcionará.

Colocar en la propiedad Interval del Timer el valor 1

Ahora el siguiente código en el formulario:

 

Private Sub Form_Load()
Label1.Caption = " Hola Mundo "
End Sub

Private Sub Timer1_Timer()
   
   With Label1
      
      ' Se desplaza el Label hacia la izquierda
      
      .Move .Left - 30
      
      'Si finalizó, vuelve a comenzar desde la parte derecha
      
      If .Left + .Width < Contenedor.Left Then
         .Left = Contenedor.Left + Contenedor.Width
      End If
   
   End With

End Sub

 

 

Ejemplo 5 - Crear una marquesina de texto vertical

Este ejemplo es identico al anterior, pero el control Label, que estará dentro de un control Frame, se desplazará desde abajo hacia arriba, haciendo un efecto de Scroll vertical

Coloca un Label1 dentro de un Frame llamado contenedor, como está en la siguiente imagen:

 

vista del ejemplo para armar un scroll de texto

 

Lo que se ve en amarillo es el control Frame, lo que está en Azul es el Label.

Nota: Los colores anteriores, solo están de muestra para distinguirlos, es decir no cambir los colores de fondo, y dejarlo con el color por defecto. O si se quiere especificar un color, que sean iguales, es decir si el frame está en amarillo, el color de fondo del Label también en amarillo, por decir un ejemplo.

Por último colocar un Timer llamado Timer1, y en la propiedad Interval colocarle el valor 1

 

Código fuente en el formulario:

Private Sub Form_Load()
   
   
   'Valores para el tamaño y posición del Label
   Label1.Height = 2500
   Label1.Width = 2385
   Label1.Left = 240
   Label1.Top = 240
   
   'Valores para el ancho ya alto del control Frame
   Contenedor.Width = 3000
   Contenedor.Height = 2000
   
   ' Texto del Label
   Label1 = "Esto es una linea" & vbNewLine _
              & "Otras linea mas" & vbNewLine _
              & "Otra mas" & vbNewLine & vbNewLine _
              & "... y otra" & vbNewLine & vbNewLine _
              & "... y otra" & vbNewLine
              
End Sub

Private Sub Timer_Timer()
   
   With Label1
      
      ' Se desplaza hacia arriba
      
      .Move .Left, .Top - 10
      
      'Si finalizó, vuelve a comenzar desde abajo
      
      If .Top + .Height < Contenedor.Top Then
         .Top = Contenedor.Top + Contenedor.Height
      End If
   End With

End Sub 

 

Enlace relacionadocomo crear una marquesina o Scroll de texto utilizando el Api de windows por ejemplo para las pantallas de créditos o " ... Acerca de ".


Otro ejemplo que tiene tan solo cuatro lineas de código, de una marquesina vertical, usando un picturebox que se encuentra dentro de otro picture y se va corriendo la propiedad Top mediante el timer para realizar el desplazamiento

 

 

Descargar


Ejemplo 6 - Animar una secuencia de archivos Gif

Este ejemplo muestra como a partir de una secuencia de archivos cargados en unos controles PictureBox, mediante un Timer y la función PaintPicture, copiar cada cuadro y generar la animación:

vista del ejemplo para descargar que permite realizar una animación simple en visual basic utilizando un Timer y una secuencia de gráficos

 

Descargar ejemplo

 


7 - Nota sobre la propiedad interval

La propiedad interval acepta como máximo el valor 65535. Es decir que si queremos asignar un valor superior nos dará un error por que desborda

Por eso , si queremos configurar el timer, con valores superiores , por ejemplo hacer que el timer se ejecute cada 10 minutos por decir un caso , podriamos hacer algo por el estilo :

Este código, ejecuta el temporizador cada 5 minutos ( el valor de la constante INTERVALO_EN_MINUTOS )

 

Código en el form con un timer1

Option Explicit
 ' Cantidad de minutos para el intervalo del timer _   en este caso para 5 minutos
Const INTERVALO_EN_MINUTOS As Integer = 5

Private Sub Form_Load()
' Ejecuta el timer cada 1 segundo
Timer1.Interval = 1000
End Sub

Private Sub Timer1_Timer()
' variable estática para acumular la cantidad de segundos
Static Temp_Seg As Long
' incrementa
Temp_Seg = Temp_Seg + 1
' comprueba que los segundos no sea igual a la cantidad de minutos _   que queremos , en este caso 5 minutos
If (Temp_Seg * 60) >= (INTERVALO_EN_MINUTOS * 60) * 60 Then
   ' reestablece
   Temp_Seg = 0
   MsgBox "Se ejcutó el timer ", vbInformation
End If

End Sub
 
  ProgramasVb Copyright. 2011-2012 All Right Reserved  
 
Este sitio web fue creado de forma gratuita con PaginaWebGratis.es. ¿Quieres también tu sitio web propio?
Registrarse gratis