Visual Basic - Ayuda con Visual Basic 6.0

Life is soft - evento anual de software empresarial
 
Vista:

Ayuda con Visual Basic 6.0

Publicado por Diego (4 intervenciones) el 22/06/2008 08:17:15
Estaba creando en Visual Basic 6.0 un Programador de tareas y me surgió la siguiente duda.

Tengo este codigo:

Private Sub Crear_Click()
Dim Respuesta As Integer
Dim Respuesta2 As Integer
If Hora = "" And Mins = "" And Secs = "" Then
Respuesta = MsgBox("No especifico la hora, minutos ni segundos para ejecutar la tarea. ¿Desea salir de la aplicacion?", vbExclamation + vbYesNo, "Error")
End If
If Respuesta = vbYes Then
Unload Me
End If
If Hora = "Hora" And Mins = "Mins" And Secs = "Secs" Then
Respuesta2 = MsgBox("Borre por favor el contenido de ejemplo de las horas, minutos y segundos., ¿Desea borrarlas automaticamente?", vbInformation + vbYesNo, "Error")
End If
If Respuesta2 = vbYes Then
Hora = ""
Mins = ""
Secs = ""
End If

End Sub

Private Sub Salir_Click()
Dim Respuesta As Integer
Respuesta = MsgBox("¿Desea salir de la aplicacion, y terminar con todas las tareas programadas?", _
vbInformation + vbYesNo, "Salir")
If Respuesta = vbYes Then
Unload Me
End If

End Sub

Private Sub Terminar_Click()
If Hora = "" And Mins = "" And Secs = "" Then
MsgBox "No hay tareas programadas", vbOKOnly _
+ vbInformation, "Informacion"
Info.Caption = "No habia tareas, no se ejecuto la operación"
Else
Hora = ""
Mins = ""
Secs = ""
Info.Caption = "Tareas Borradas"
End If

End Sub

Lo que quiero hacer es que en Crear_Click() crear un bloque While que mientras el reloj de windows no alcance la hora indicada del usuario, no se muestre el texto indicado por el usuario, pero si el reloj de windows llega, que muestre el mensaje.

Saludos.

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ayuda con Visual Basic 6.0

Publicado por igor (633 intervenciones) el 22/06/2008 20:18:24
Yo te recomiendo que utilices un control timer.

Este control tiene 2 propiedades (enabled e interval) que permiten habilitar el temporizador y establecer el tiempo de intervalo entre cada ejecución en ms.

Como estamos hablando de horas, minutos y segundos, puedes utilizar un timer de 1000ms (1 segundo) o de 10 segundos (según la precisión que quieras).

En un principio pones enabled = false, y en la funcion Crear_Click en vez de un while pones enabled = true.

Esto hará que el timer empiece a contar y cuando llegue al tiempo establecido hará saltar la función Timer1_Timer(), donde debemos introducir el código que comprobará la hora, etc.

La razón de usar un timer en vez del while es que liberas el procesador para que lo utilicen las demás aplicaciones. Esto también podemos conseguirlo con un:

while x
------
doevents()
wend

La diferencia es que liberaría el procesador UNICAMENTE cuando una aplicación lo necesite, el resto del tiempo estaría consumiendo el 100% porque estaría realizando el bucle infinito.

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda con Visual Basic 6.0

Publicado por Diego (4 intervenciones) el 22/06/2008 21:40:57
Lo acabo de probar con este codigo, y no funciona.

Private Sub Crear_Click()
Dim Respuesta As Integer
Dim Respuesta2 As Integer
Dim HoraM As String
If Hora = "" And Mins = "" And Secs = "" Then
Respuesta = MsgBox("No especifico la hora, minutos ni segundos para ejecutar la tarea. ¿Desea salir de la aplicacion?", vbExclamation + vbYesNo, "Error")
Else
Uno.Text = Timer2
HoraM = Hora + ":" + Mins + ":" + Secs
Timer2.Enabled = True
Info.Caption = "Tarea Creada"
End If
If Respuesta = vbYes Then
Unload Me
End If
If Hora = "Hora" And Mins = "Mins" And Secs = "Secs" Then
Respuesta2 = MsgBox("Borre por favor el contenido de ejemplo de las horas, minutos y segundos., ¿Desea borrarlo automaticamente?", vbInformation + vbYesNo, "Error")
Else
Uno.Text = Timer2
HoraM = Hora + ":" + Mins + ":" + Secs
Timer2.Enabled = True
Info.Caption = "Tarea Creada"
End If
If Respuesta2 = vbYes Then
Hora = ""
Mins = ""
Secs = ""
End If

End Sub

Private Sub Form_Load()
Timer2.Interval = 1000
Timer2.Enabled = True
Timer1.Interval = 1000 'El primer timer es para que muestra la hora actual en un sitio
Timer1.Enabled = True
End Sub

Private Sub Salir_Click()
Dim Respuesta As Integer
Respuesta = MsgBox("¿Desea salir de la aplicacion, y terminar con todas las tareas programadas?", _
vbInformation + vbYesNo, "Salir")
If Respuesta = vbYes Then
Unload Me
End If

End Sub

Private Sub Terminar_Click()
If Hora = "" And Mins = "" And Secs = "" Then
MsgBox "No hay tareas programadas", vbOKOnly _
+ vbInformation, "Informacion"
Info.Caption = "No habia tareas, no se ejecuto la operación"
Else
Hora = ""
Mins = ""
Secs = ""
Info.Caption = "Tareas Borradas"
End If

End Sub

Private Sub Timer1_Timer()
HActual.Text = Time
End Sub

Private Sub Timer2_Timer()
If Timer2 = Time Then
MsgBox "Tarea programada", vbInformation + vbOKOnly, "Tarea"
End If

End Sub

Diganme como hacerlo, (expliquense bien si no es mucho pedir) o, si son amables corriganme el codigo.

Muchas Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda con Visual Basic 6.0

Publicado por igor (633 intervenciones) el 22/06/2008 22:43:20
Pues yo creo que me explico bien.

Creo haber dejado claro que el timer debe activarse en Crear_Click() NO en Form_Load() o eso es lo que tiene una pizca de lógica.

Además yo no tengo la culpa que compares la fecha actual del sistema con el timer2, esto es algo que no tiene ningún sentido. Empieza por leer en la ayuda lo que es un timer.

Pero para ser generoso:

Private Sub Form_Load()
Timer2.Interval = 1000
Timer2.Enabled = False
End Sub

Private Sub Timer2_Timer()
If HoraM = Time Then
MsgBox "Tarea programada", vbInformation + vbOKOnly, "Tarea"
End If
End Sub

Claro está que HoraM debe ser una variable global, si es que sabes lo que es eso.

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda con Visual Basic 6.0

Publicado por Diego (4 intervenciones) el 23/06/2008 09:07:16
Disculpa las molestias.

Muchas Gracias por todo.

PD: Y si, se que es una varible global...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar