• Viernes 26 de Abril de 2024, 05:06

Autor Tema:  Utilización de comando TIMER VB6  (Leído 10842 veces)

ganitomaster

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Utilización de comando TIMER VB6
« en: Jueves 28 de Mayo de 2009, 17:12 »
0
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

  • Miembro HIPER activo
  • ****
  • Mensajes: 629
    • Ver Perfil
    • http://www.cpimario.com
Re: Utilización de comando TIMER VB6
« Respuesta #1 en: Jueves 28 de Mayo de 2009, 20:06 »
0
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
  1. Private Sub Timer1_Timer()
  2.     Static blnShowLabel As Boolean
  3.     If blnShowLabel Then
  4.         Label1.Visible = True
  5.         blnShowLabel = False
  6.     Else
  7.         Label1.Visible = False
  8.         blnShowLabel = True
  9.     End If
  10.     DoEvents
  11. End Sub
  12.  
Puedes activar o desactivar el Timer con la propiedad enabled

Código: Text
  1.      Timer1.enabled = false
  2.  

 :comp:

ganitomaster

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: Utilización de comando TIMER VB6
« Respuesta #2 en: Jueves 28 de Mayo de 2009, 20:26 »
0
gracias por tu respuesta ahora quede un pco mas claro muchas gracias .. probare como me fue y te contare que tal   :D

Nebire

  • Miembro HIPER activo
  • ****
  • Mensajes: 670
    • Ver Perfil
Re: Utilización de comando TIMER VB6
« Respuesta #3 en: Sábado 30 de Mayo de 2009, 00:21 »
0
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
  1.  
  2. Private Sub Timer1_Timer()
  3.     Static blnShowLabel As Boolean
  4.    
  5.     blnShowLabel = not blnShowLabel
  6.     Label1.Visible = blnShowLabel
  7.     DoEvents
  8. End Sub
  9.  
  10.  
  11.  
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
  1.  
  2. private Periodo as integer  ' un valor menor de 86401 (segundos de 1 día)
  3.  
  4. '  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ón
  5. private sub AlterarModo
  6.      Static blnShowLabel As Boolean
  7.     dim crono as long
  8.    
  9.     crono= Timer
  10.     do
  11.          doevents
  12.     loop while (timer - crono) < periodo
  13.     blnShowLabel = not blnShowLabel
  14.     Label1.Visible = blnShowLabel
  15. end sub
  16.  
  17. ' Este código es equivalente al anterior pero que desactiva el timer tras su ejecución
  18. Private Sub Timer1_Timer()
  19.     Static blnShowLabel As Boolean
  20.    
  21.     blnShowLabel = not blnShowLabel
  22.     Label1.Visible = blnShowLabel
  23.     timer1.enabled=false                          ' esto hace que sea idéntico a la rutina anterior
  24. End Sub
  25.  
  26. ' la llamada de uno u otro método son equivalentes, aunque el resultado es distinto, ya que el timer es asíncrono.
  27. public sub Micodigo
  28.    'algún código
  29.   ' ..............
  30.     call  AlterarModo
  31.     timer1.enabled= true          ' aquí se activa el timer, pero se contínua 'al timepo' con la siguiente línea
  32.   ' más código
  33.   ' .......................
  34. end sub
  35.  
  36. ' si necesitáramos que el timer se comportara de forma síncrona como sucede con la función tendríamos que ponerle una trampa.
  37. public sub Micodigo
  38.    'algún código
  39.   ' ..............
  40.     call  AlterarModo
  41.     timer1.enabled= true
  42.     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'
  43.         doevents
  44.     loop while timer1.enabled = true
  45.   ' más código
  46.   ' .......................
  47. end sub
  48.  
  49.  

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
«Ma non troppo»
----> ModoVacaciones = False<----