Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

¿Como hacer que no siga ejecutandose el programa hasta que termine Timer?

Estas en el tema de ¿Como hacer que no siga ejecutandose el programa hasta que termine Timer? en el foro de Visual Basic clásico en Foros del Web. Buenas de nuevo compañer@s. Aqui estoy con otra duda con los Timers (es que estoy metido de lleno con ellos). Bueno, necesito que mi programa, ...
  #1 (permalink)  
Antiguo 11/06/2010, 22:03
 
Fecha de Ingreso: abril-2009
Mensajes: 72
Antigüedad: 15 años
Puntos: 0
Exclamación ¿Como hacer que no siga ejecutandose el programa hasta que termine Timer?

Buenas de nuevo compañer@s.

Aqui estoy con otra duda con los Timers (es que estoy metido de lleno con ellos).

Bueno, necesito que mi programa, cuando pulse un boton ejecute un Timer, y que cuando termine este Timer, se inicie otro.

El segundo Timer, lo pongo en "Enable=True", al final de los "Select Case" del primer Timer (por que creia que así, primero ejecutaria todos los "Select Case", y cuando terminara el último, entonces seguiria con el codigo). Pero esto no es así.

¿Sabriais decirme como puedo hacerlo para que primero me ejecute entero el primer Timer, y una vez que haya completado este entero, entonces siga con el codigo?

Espero que podais echarme una mano una vez más.

Muchas gracias.
  #2 (permalink)  
Antiguo 11/06/2010, 23:51
Avatar de erbuson  
Fecha de Ingreso: noviembre-2009
Mensajes: 701
Antigüedad: 14 años, 5 meses
Puntos: 53
Respuesta: ¿Como hacer que no siga ejecutandose el programa hasta que termine Timer?

Hola:

Prueba este ejemplo para captar la idea:


Private Sub Command1_Click()
Timer1.Enabled = True
End Sub

Private Sub Timer1_Timer()
Timer1.Enabled = False
MsgBox "Han pasado los segundos activamos segundo Timer"
Timer2.Enabled = True
End Sub

Private Sub Timer2_Timer()
Timer2.Enabled = False
' Aqui lo que tu quieras
End Sub

Si no lo ves claro, consulta de nuevo.

Saludos
__________________
Agradecer a quien te enseñó, es enseñar lo que de él aprendiste.
Recuerda: Decir gracias, poco cuesta y mucho vale ...
  #3 (permalink)  
Antiguo 12/06/2010, 04:10
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 17 años, 8 meses
Puntos: 29
Respuesta: ¿Como hacer que no siga ejecutandose el programa hasta que termine Timer?

Puede que sea que tienes los timers activados al arrancar el programa.
Desactiva al menos el timer2 en tiempo de diseño o en el load del form y/o desactivalo al entrar en el timer1 para que no se ejecute hasta que lo actives al final.

Saludos
__________________
No hay preguntas tontas, solo gente estup..., ¡No!, ¿como era? No hay gente que pregunte a tontos... ¡Nooo!... ¡Vaya cabeza!
  #4 (permalink)  
Antiguo 12/06/2010, 09:25
 
Fecha de Ingreso: abril-2009
Mensajes: 72
Antigüedad: 15 años
Puntos: 0
Respuesta: ¿Como hacer que no siga ejecutandose el programa hasta que termine Timer?

Buenas.

Gracias a los dos por contestar. Aunque... no consigo hacerlo funcionar.

Os cuento un poco más detalladamente lo que quiero hacer, y lo que yo tengo hecho.

Código:
Private Sub Command1_Click()

If Combo2.Text <> "" Then
    Image10.Visible = True
    sem = 1
    Timer7.Enabled = True

Else
    MsgBox ("Seleccione un elemento"), vbOKOnly + vbInformation, "Seleccione elemento"
End If

ss = 0: mm = 0: hh = 0

End Sub

Private Sub Timer7_Timer()

sem = sem + 1

If sem > 5 Then
    Timer7.Enabled = False
End If

Select Case sem
  Case 1:

  Case 2:
    Image11.Visible = True
  Case 3:
    Image12.Visible = True
  Case 4:
    Image13.Visible = True
  Case 5:
    Image14.Visible = True
    Image15.Visible = True
    Image16.Visible = True
    Image11.Visible = False
    Image12.Visible = False
    Image13.Visible = False
End Select 

Timer2.Enabled = True

End Sub

Private Sub Timer2_Timer()

If ss = 60 Then
    ml = 0
    ss = 0
    mm = mm + 1
End If
If mm = 60 Then
    ss = 0
    mm = 0
    hh = hh + 1
End If
Label5.Caption = Format(hh, "00") & ":" & Format(mm, "00") & ":" & Format(ss, "00")
End Sub
En teoria (bueno, y esto lo hace bien) el Timer7 es un semaforo, osea, cada segundo se enciende una luz roja, y a los tres segundos, se apagan todas las rojas y se encienden las tres verdes. Y lo que quiero, es que despues de que se hallan encendido todas las verdes, empiece a contar el cronometro.

Todos los timer, los tengo por defecto en Enabled = False, aqui no se ve, pero el Timer2, se pone en False, despues de que termine otra cosa, pero eso es en otra parte del codigo.

El caso, es que yo pensaba, que cuando pongo un Timer y le hago Select Case, primero me haria el Case1, luego volveria al bucle y haria el Case2, luego el 3...y así, y que despues, cuando acabaria con todos los Cases, seguiria con la siguente linea, sin embargo, me hace el primer case, pasa por el End Select y sigue activando el cronometro, para seguir haciendo el select case.

Aquí al final, creo que me he liado un poco tratando de explicaros esto.

Bueno, a ver si me podeis seguir ayudando, en cualquier caso, muchas gracias por estar siempre ahí.

Un saludo.
  #5 (permalink)  
Antiguo 12/06/2010, 09:33
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 17 años, 8 meses
Puntos: 29
Respuesta: ¿Como hacer que no siga ejecutandose el programa hasta que termine Timer?

Entonces lo que tienes que hacer es activar el timer2 solo despues del valor 5:

Case 5:
Image14.Visible = True
Image15.Visible = True
Image16.Visible = True
Image11.Visible = False
Image12.Visible = False
Image13.Visible = False
TIMER2.ENABLED=TRUE
End Select

En lugar de despues del select.

Creo que es eso lo que te falla.

Suerte
__________________
No hay preguntas tontas, solo gente estup..., ¡No!, ¿como era? No hay gente que pregunte a tontos... ¡Nooo!... ¡Vaya cabeza!
  #6 (permalink)  
Antiguo 12/06/2010, 11:29
 
Fecha de Ingreso: abril-2009
Mensajes: 72
Antigüedad: 15 años
Puntos: 0
Respuesta: ¿Como hacer que no siga ejecutandose el programa hasta que termine Timer?



Bien, bien, bien.

Una vez más, ¡grandioso! pkj.

Efectivamente, has dado en la tecla.

Muchas gracias, y bueno erbuson, por supuesto a ti también. Es la caña poder contar con gente como vosotros siempre dispuesto a dar soluciones y ayuda a los que estamos empezando.

Un saludo.

Etiquetas: programa, time
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:43.