Programación General > Visual Basic para principiantes
Utilización de comando TIMER VB6
(1/1)
ganitomaster:
Hola bueno les traigo una consulta ... necesito utilizar el comando TIMER , para hacer que un label apareza y desparezca cada cierto intervalo de tiempo. pero el problema es que cuando asigno el TIMER se cierra el formulario completo y yo solo necesito que se cierre el label cada cierto intervalo de tiempo.
muchas gracias . espero alguien pueda guiarme con este comando
cpmario:
En una forma coloca un timer con nombre Timer1 y con su propiedad Interval = 1000 y una etiqueta con nombre Label1
Coloca el siguiente código en el evento timer
--- Código: Text ---Private Sub Timer1_Timer() Static blnShowLabel As Boolean If blnShowLabel Then Label1.Visible = True blnShowLabel = False Else Label1.Visible = False blnShowLabel = True End If DoEventsEnd Sub Puedes activar o desactivar el Timer con la propiedad enabled
--- Código: Text --- Timer1.enabled = false
:comp:
ganitomaster:
gracias por tu respuesta ahora quede un pco mas claro muchas gracias .. probare como me fue y te contare que tal :D
Nebire:
puedes abreviar un poco el código que te señala cpmario, supongo que todavía serás capaz de entenderlo:
--- Código: Visual Basic --- Private Sub Timer1_Timer() Static blnShowLabel As Boolean blnShowLabel = not blnShowLabel Label1.Visible = blnShowLabel DoEventsEnd Sub Recuerda que aquí timer1 es un control no la instrucción Timer
Para hacer algo parecido con la instrucción Timer el código sería:
--- Código: Visual Basic --- private Periodo as integer ' un valor menor de 86401 (segundos de 1 día) ' al cruzar la medianoche, mientras se ejecuta esta función la llamada fallará, si no se controla... es un ejercicio para el interesado controlar dicha situaciónprivate sub AlterarModo Static blnShowLabel As Boolean dim crono as long crono= Timer do doevents loop while (timer - crono) < periodo blnShowLabel = not blnShowLabel Label1.Visible = blnShowLabel end sub ' Este código es equivalente al anterior pero que desactiva el timer tras su ejecuciónPrivate Sub Timer1_Timer() Static blnShowLabel As Boolean blnShowLabel = not blnShowLabel Label1.Visible = blnShowLabel timer1.enabled=false ' esto hace que sea idéntico a la rutina anteriorEnd Sub ' la llamada de uno u otro método son equivalentes, aunque el resultado es distinto, ya que el timer es asíncrono.public sub Micodigo 'algún código ' .............. call AlterarModo timer1.enabled= true ' aquí se activa el timer, pero se contínua 'al timepo' con la siguiente línea ' más código ' .......................end sub ' si necesitáramos que el timer se comportara de forma síncrona como sucede con la función tendríamos que ponerle una trampa.public sub Micodigo 'algún código ' .............. call AlterarModo timer1.enabled= true do ' aquí el se espera hasta que el timer se apague antes de continuar con la siguiente línea, por tanto se comporta igual que la llamada a 'AlterarModo' doevents loop while timer1.enabled = true ' más código ' .......................end sub
Sin embargo para hacer 'parpadear' un control conviene que sea un control timer, precisamente porque es asíncrono y la ejecución continúa...
Por último recordarte que el timer se utiliza con milisegundos y su valor máximo es aproximadamente 1 minuto por lo que habrás de utilizar un multiplicador de frecuencia para valores mayores... la función timer trabaja con segundos y su valor expresa los segundos que han pasado desde la medianoche por eso después de 86399 pasa a 0. si un período a controlar es 400 y se invoca después del segundo 86001 no fncionará ya que nunca se dará la condición (timer - puntoDeInicio) > periodo
Navegación
Ir a la versión completa