Timer

Juan
25 de Junio del 2004
Hola quisiera que cuando presione el control "CommandButton" haga instrucciones, luego pase 2 segundos sin hacer nada y al final otras instrucciones; todo esto en el control.
Lo que quiero asber cual es la funcion que debo aplicar a este boton(control) o cualquier boton, para que transcurra un tiempo y al cabo de este continue otras instrucciones.
Ojala me puedas ayudar. Gracias

gabriel
25 de Junio del 2004
Te paso este codigo que hace lo que vos queres hacer

Sub WaitForDelay(nSecs As Single, Optional blnDoEvents)
Dim nTmr As Single
nTmr = Timer
Do While nTmr + nSecs > Timer
If Not IsMissing(blnDoEvents) Then
DoEvents
End If
Loop
End Sub

y para llamrlo
WaitForDelay (2)

el segundo parametro controla si queres o no controlar algún evento en tu aplicación para interrumpir la espera.

Juan
25 de Junio del 2004
Muchas gracias gabriel me a servido bastante.
Me puedes explicar que significa el segundo parametro.
Como lo puedo llamar con los 2 parametros.

gabriel
25 de Junio del 2004
Lo llamas así
Call WaitForDelay(3, True)

al tener el segundo parámetro un valor hace que la instrucción

If Not IsMissing(blnDoEvents) Then
DoEvents
End If

sea valida y entre ha analizar el DoEvents, te paso un poco de la info que te dá el help de VB, si necesitas más, pinta la función y presioná F1.

La función DoEvents pasa el control al sistema operativo. El control no se devuelve hasta que el sistema operativo haya terminado de procesar los eventos en cola y se hayan enviado todas las teclas de la cola SendKeys.

DoEvents es más útil para tareas sencillas como permitir que un usuario cancele un proceso después de que ha comenzado, por ejemplo una búsqueda de un archivo. Para procesos de ejecución larga, es mejor dar preferencia al procesador utilizando un Timer o delegando la tarea a un componente EXE de ActiveX. En último caso, la tarea puede continuar completamente independiente de la aplicación y el sistema operativo tiene en cuenta la multitarea y los intervalos de tiempos.