Control Timer 2010
Control Timer 2010
Control Timer 2010
El control Timer es un temporizador que nos permite ejecutar instrucciones de cdigo, rutinas, funciones etc..., cada cierto intervalo de tiempo. Este control es invisible en tiempo de ejecucin, esto quiere decir que no tiene interfaz grfica, solo es visible cuando lo agregamos a un formulario y estamos en modo de diseo. La propiedad mas importante de este control es la propiedad Interval
En ese procedimiento ( controlador de evento ) es donde debemos escribir las instrucciones que queremos que se ejecuten cada cierto intervalo de tiempo. La propiedad Interval est expresada en milisegundos, esto quiere decir que por ejemplo si quisieramos ejecutar una instruccin 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. La propiedad Enabled = True.
Public Class Form1 Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick Label1.Text = Format(Now, "Long TIME") End Sub End Class
Dale doble click en el CmdActivar, es decir en el CommandButton y coloca la siguiente instruccin para activar el Timer1: Timer1.Enabled = True Ahora Doble click en el otro botn para escribir las instruccin para desactivar el Timer1 cuando hagamos click en el botn: Timer1.Enabled = False Una cosa que es muy comn es asignar la propiedad Interval en tiempo de ejecucin, es decir, en ves de hacerlo desde el modo diseo 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 cdigo y Visual Basic te muestre el procedimiento del evento Load y coloca la siguiente lnea: Timer1.interval = 1000 De esta manera ya sabes que desde cualquier punto del programa, se puede cambiar la propiedad interval para que el temporizador se ejecute de acuerdo a tus necesidades.
Public Class Form1 Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick Label1.Text = Format(Now, "Long TIME") End Sub Private Sub Activar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Activar.Click Timer1.Enabled = True End Sub
Private Sub Desactivar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Desactivar.Click Timer1.Enabled = False End Sub Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Timer1.Interval = 1000 End Sub End Class
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 mnimo est en 0 y cuando movemos el scroll hasta el mximo 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 instruccin 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 rpido parpadear el Label1, en cambio mientras mas alto sea el valor mas lento parpadear el Label1. 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() Label1.Visible = Not Label1.Visible End Sub
Lo que est seleccionado, es el control Frame, el Label asegrate que est dentro del Frame, de lo contrario no funcionar. Colocar en la propiedad Interval del Timer el valor 1
Public Class Form1 Public x As Integer Dim m As Integer Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick If Label1.Left < Contenedor.Left Then m = +2 End If If Label1.Right > Contenedor.Right Then m = -2 End If x=x+m Label1.Location = New Point(x, 15) End Sub Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load x = Contenedor.Right m=2 Label1.Location = New Point(0, 0) End Sub End Class
Por ltimo colocar un Timer llamado Timer1, y en la propiedad Interval colocarle el valor 1 Cdigo fuente en el formulario:
Public Class Form1 Dim y As Integer Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Label1.Text = "HOLA" Label1.Location = New Point(0, Contenedor.Bottom) End Sub Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick If Label1.Top > Contenedor.Top Then y=y-2 Else y = Contenedor.Bottom End If Label1.Location = New Point(10, y) End Sub End Class
Public Class Form1 Public x As Integer Private Sub Timer1_Tick_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick If PictureBox1.Right < Me.Right Then x = x + 20 Else x = Me.Left End If PictureBox1.Location = New Point(x, 15) End Sub End Class
8.- Puede ejecutar la aplicacin. Nota: Puede observar el numero 10 de interval si quiere una ejecucin mas rapida de el metodo del timer. Si quiere que la imagen se reproduzca menos veces modifique 20 del codigo del timer.
Practica # 7: La animacion
Cambiando la imagen. 1.- Agregue al proyecto 8 un control de tipo IMAGE con el nombre Leo. 2.- Confirmando que quiere crear una matriz de controles. 3.- Copie la imagen de cada jaguar en el control <IMAGE>. 4.- Modifica el codigo de la funcion del control timer: Private Sub Timer1_Timer() Static DibActual As Integer If DibActual = 7 Then DibActual = -1 DibActual = DibActual + 1 Picture1.Left = Picture1.Left + 400 Picture1.Picture = Leo(DibActual).Picture End Sub 5.- Ejecute su aplicacion.
Public Class Form1 Public x As Integer Private Sub Timer1_Tick_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick Static DibActual As Integer If DibActual = 2 Then DibActual = -1 DibActual = DibActual + 1 PictureBox1.Left = PictureBox1.Left + 2 PictureBox1.Image = Leo.Images(DibActual) End Sub End Class
Practica #7:
Colocar dos leopardos corriendo a diferente velocidad .