Autor Tema: Cumplir varias funciones con un Timer  (Leído 3992 veces)

0 Usuarios y 1 Visitante están viendo este tema.

NsTeam

  • Kilobyte
  • **
  • Mensajes: 54
  • Reputación: +1/-2
    • Ver Perfil
Cumplir varias funciones con un Timer
« en: Septiembre 26, 2011, 03:33:44 am »
Hola, bueno tengo un problema tratando de ralizar un aplicación. Tengo un commandbutton y un Timer

Como podría hacer para que cada vez que le de click al button y active el timer1, solo active una función?

Código: (vb) [Seleccionar]
Private Sub Command1_Click()
timer1.enabled = true
End Sub

Private Sub Timer1_Timer()
msgbox "prueba1"
msgbox "prueba2"
msgbox "prueba3"
msgbox "prueba4"
msgbox "prueba5"
msgbox "prueba6"
msgbox "prueba7"

timer1.enabled = false
End Sub

el timer tiene 7 funciones, pero como haría para que cada vez que le de clic al button y se active el timer solo cumpla una sola funcion en orden de Arriba para abajo, ejemplo:

primer clic: msgbox "prueba1", segundo clic: msgbox "prueba2"........

Gracia de Antemano :)
« última modificación: Septiembre 26, 2011, 10:48:36 am por xkiz ™ »

xkiz ™

  • Moderador Global
  • Gigabyte
  • *****
  • Mensajes: 283
  • Reputación: +30/-11
    • Ver Perfil
    • xkiz ™
Re:Cumplir varias funciones con un Timer
« Respuesta #1 en: Septiembre 26, 2011, 10:43:09 am »
Código: (vb) [Seleccionar]
Dim a As Integer

Private Sub Command1_Click()
call aaa(5)
End Sub

Private Sub Timer1_Timer()
Select Case (a)
    Case 0: Debug.Print "prueba: " & a
    Case 1: Debug.Print "prueba: " & a
    Case 2: Debug.Print "prueba: " & a
    Case 3: Debug.Print "prueba: " & a
    Case 4: Debug.Print "prueba: " & a
    Case 5: Debug.Print "prueba: " & a
    Case 6: Debug.Print "prueba: " & a
    Case 7: Debug.Print "prueba: " & a
    Case Else:
End Select
Timer1.Enabled = False
End Sub

private sub aaa(i as integer)
a = i
Timer1.Enabled = True
End Sub
« última modificación: Septiembre 26, 2011, 10:46:30 am por xkiz ™ »

NsTeam

  • Kilobyte
  • **
  • Mensajes: 54
  • Reputación: +1/-2
    • Ver Perfil
Re:Cumplir varias funciones con un Timer
« Respuesta #2 en: Septiembre 26, 2011, 04:09:51 pm »
Hola xkiz, agradezco tu respuesta y tu apoyo, pero quiero decir que no soy muy bueno en visual basic, y trate de probar el código y no sé que es lo que tendría que cambiar o modificar para que me anda, porque intente propando el codigo y no logré hacerlo  :(

así mismo traté de buscar en google acerca de "debug.print" pero en realidad me enrede y no pude hacer lo que quería, agradecería mucho si me explicarías como puedo manejar este código.

Muchas gracias

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Cumplir varias funciones con un Timer
« Respuesta #3 en: Septiembre 26, 2011, 06:23:23 pm »
Lo que pasa es que mi amigo xkiz ™ es de pocas palabras  :) :) y va directo a la solución.

Lo que el te esta queriendo explicar es que te hagas un procedimiento, en su ejemplo le pasas el valor 5 y te saldra "prueba: 5", el debug.print es solo para comprobar que toma ese valor, lo ves en la ventana inmediato.
El "truco" esta en la variable a.

Voy a tratar de ponértelo de forma similar. Tu quieres que el usuario haga clic y la primera vez mostrara "prueba1" en el segundo clic "prueba 2" etc.
Tal como el hizo, declaras a nivel de formulario Dim a as Integer.

Como a inicialmente sera cero en tu boton "button" pones esto:
Código: [Seleccionar]
Private Sub Command1_Click()
a = a + 1
if a = 8 then   '<----- Esto es opcional, si solo quieres usar 7, sino quitalo y deja solo Timer.Enabled = True
   a = 1
end if
Timer.Enabled = true
End Sub

y en el timer te doy dos alternativas:
1.- Si solo quieres mostrar un mensaje como el que indicaste, pues bastaria con hacer
Código: [Seleccionar]
Private Sub Timer1_Timer()
Msgbox ("Prueba" & a)
Timer1.Enabled = False
End Sub

2.- O si quieres ejecutar un proceso o función dependiendo que numero de clic es entonces:
Código: [Seleccionar]
Private Sub Timer1_Timer()
Select Case (a)
    Case 1: Procedimiento1
    Case 2: Procedimiento2
    Case 3: Procedimiento3
    Case 4: Procedimiento4
    Case 5: Procedimiento5
    Case 6: Procedimiento6
    Case 7: Procedimiento7
    Case Else: ProcedimientoX '<-- Lo mismo, opcional, si solo tienes 7 quitas esto, sino dejalo para los demas casos.
End Select
Timer1.Enabled = False
End Sub

Aunque la verdad no se para que el timer ya que solo ocurre una vez y se desactiva, en ese caso, si lo que quieres es que se ejecute una sola función repetitivamente hasta que el usuario haga clic de nuevo y continue con la siguiente función repetitivamente, el código quedaría asi:

Código: [Seleccionar]
Private Sub Timer1_Timer()
Select Case (a)
    Case 1: Procedimiento1
    Case 2: Procedimiento2
    Case 3: Procedimiento3
    Case 4: Procedimiento4
    Case 5: Procedimiento5
    Case 6: Procedimiento6
    Case 7: Procedimiento7
    Case Else: ProcedimientoX .
End Select
End Sub
Osea no desactives el timer, si el usuario presiona por primera vez, se ejecutara Procedimiento1 repetitivamente hasta que el usuario presiona otra vez el boton y empezara a ejecutar Procedimiento2 repetitivamente. Alli si le veo sentido al Timer, no se si estamos sintonizados y si esta explicación te ayudo o te mareo  ;) :) ;)


Saludos

« última modificación: Septiembre 26, 2011, 06:37:23 pm por YAcosta »
Me encuentras en YAcosta.com

xkiz ™

  • Moderador Global
  • Gigabyte
  • *****
  • Mensajes: 283
  • Reputación: +30/-11
    • Ver Perfil
    • xkiz ™
Re:Cumplir varias funciones con un Timer
« Respuesta #4 en: Septiembre 26, 2011, 06:39:07 pm »
jejeje... no es que sea de pocas palabras, si no que me ha pasado muchas veces que al tratar de explicar algo confundí aún mas a la persona que estaba explicándole algo X. por eso fui al código derecho, perdón...

PD: 37 palabras

NsTeam

  • Kilobyte
  • **
  • Mensajes: 54
  • Reputación: +1/-2
    • Ver Perfil
Re:Cumplir varias funciones con un Timer
« Respuesta #5 en: Septiembre 26, 2011, 06:52:09 pm »
jeje, bueno gracias YAcosta en verdad me sirvió de mucho tu explicación y también gracias a xkiz ™ porque gracias al código que me brindaste pude resolver mi problema  :P

+1