6 respuestas
Hola,
En el módulo de tu formulario, declaras una variable global booleana (por ejemplo: Private flagTimer As Boolean), así como esta función:
En el Form_Load del formulario, inicializas tu flag en False (p. ej.: flagTimer = False). Luego, en el evento Click de tu botón, combínalo así:
Solo queda codificar el procedimiento del Timer usando un bucle while:
Ánimo
;o)
polux
En el módulo de tu formulario, declaras una variable global booleana (por ejemplo: Private flagTimer As Boolean), así como esta función:
Private Declare Function GetTickCount Lib "kernel32" () As Long Public Sub xWait(ByVal MilsecToWait As Long) Dim lngEndingTime As Long lngEndingTime = GetTickCount() + (MilsecToWait) Do While GetTickCount() < lngEndingTime DoEvents Loop End Sub
En el Form_Load del formulario, inicializas tu flag en False (p. ej.: flagTimer = False). Luego, en el evento Click de tu botón, combínalo así:
Private Sub Command1_Click() If flagTimer = False Then flagTimer = True ElseIf flagTimer = True Then flagTimer = False End If Call Timer1_Timer End Sub
Solo queda codificar el procedimiento del Timer usando un bucle while:
Private Sub Timer1_Timer() While flagTimer = True '1 - código para la consulta SQL '2 - código para el archivo Call xWait(3000) Wend End Sub
Ánimo
;o)
polux
hola
el temporizador se encuentra en los componentes. Hacemos clic sobre él y lo
arrastramos a la hoja como todos los componentes
El temporizador tiene dos ajustes: activado/desactivado y periodo o frecuencia.
El temporizador emite impulsos a la frecuencia deseada
Si mal no recuerdo, es de 5 milisegundos a 1 segundo
Un doble clic en el icono del temporizador hace aparecer
la función ontimer que es uno de los métodos del objeto timer
allí se ejecuta el código que se elige en cada impulso
que emite el temporizador a la frecuencia deseada y solo si está "enabled"
Si el retraso de 5 milisegundos es demasiado largo, se pueden usar varios temporizadores, pero si es Windows 98 o 95, las prestaciones son muy limitadas. El temporizador es una buena solución junto a otras para que la interfaz no se bloquee mientras se ejecuta un largo procesamiento.
rtfm cordialmente
¤
el temporizador se encuentra en los componentes. Hacemos clic sobre él y lo
arrastramos a la hoja como todos los componentes
El temporizador tiene dos ajustes: activado/desactivado y periodo o frecuencia.
El temporizador emite impulsos a la frecuencia deseada
Si mal no recuerdo, es de 5 milisegundos a 1 segundo
Un doble clic en el icono del temporizador hace aparecer
la función ontimer que es uno de los métodos del objeto timer
allí se ejecuta el código que se elige en cada impulso
que emite el temporizador a la frecuencia deseada y solo si está "enabled"
Si el retraso de 5 milisegundos es demasiado largo, se pueden usar varios temporizadores, pero si es Windows 98 o 95, las prestaciones son muy limitadas. El temporizador es una buena solución junto a otras para que la interfaz no se bloquee mientras se ejecuta un largo procesamiento.
rtfm cordialmente
¤
Gracias por todo!
Cuando se abre un programa, siempre aparece una ventana con un título, el nombre del producto, la versión, la licencia,... que se abre primero. Me gustaría que en mi programa esa ventana se abra (esto está bien) pero que permanezca en la pantalla durante 5 segundos, por ejemplo (ahora se muestra y desaparece de inmediato). ¿Cómo se puede elegir ese tiempo?
¡Muchas gracias de antemano!
Ma.
Cuando se abre un programa, siempre aparece una ventana con un título, el nombre del producto, la versión, la licencia,... que se abre primero. Me gustaría que en mi programa esa ventana se abra (esto está bien) pero que permanezca en la pantalla durante 5 segundos, por ejemplo (ahora se muestra y desaparece de inmediato). ¿Cómo se puede elegir ese tiempo?
¡Muchas gracias de antemano!
Ma.
aquí tienes la traducción:
pon el intervalo del temporizador a 0 y cuando quieras activar el cronómetro asigna a interval otro valor, por ejemplo 1000 = 1 segundo, y en
private sub timer_timer ... end sub
pon un contador i = i+1 cuando el "i" alcance el valor que quieras, por ejemplo 10, asigna a interval otra vez cero
interval = 0 'detiene el contador y interval <> 0 lo dispara
private sub timer_timer ... end sub
pon un contador i = i+1 cuando el "i" alcance el valor que quieras, por ejemplo 10, asigna a interval otra vez cero
interval = 0 'detiene el contador y interval <> 0 lo dispara
Hola,
estoy empezando con VB y me gustaría poder usar un temporizador para realizar una acción repetitiva.
En realidad quiero que el temporizador se active/desactive mediante un botón de modo que:
- mientras el botón esté activo, el temporizador debe ejecutar la misma acción (en realidad dos: ejecución de una consulta SQL, y luego la concatenación del resultado en un archivo CSV existente), luego volver a iniciar un conteo de 30 segundos, ejecutar la consulta, añadir su resultado al archivo, volver a iniciar el conteo, etc.
- si el botón está desactivado, el temporizador se detiene después de haber ejecutado la acción a la que está vinculado.
Concretamente, me cuesta entender cómo programar un temporizador así y qué hacer respecto a la concatenación de datos a un archivo ya existente.
Agradezco de antemano a todas las personas que tengan un poco de tiempo para ayudarme a resolver este problema.
estoy empezando con VB y me gustaría poder usar un temporizador para realizar una acción repetitiva.
En realidad quiero que el temporizador se active/desactive mediante un botón de modo que:
- mientras el botón esté activo, el temporizador debe ejecutar la misma acción (en realidad dos: ejecución de una consulta SQL, y luego la concatenación del resultado en un archivo CSV existente), luego volver a iniciar un conteo de 30 segundos, ejecutar la consulta, añadir su resultado al archivo, volver a iniciar el conteo, etc.
- si el botón está desactivado, el temporizador se detiene después de haber ejecutado la acción a la que está vinculado.
Concretamente, me cuesta entender cómo programar un temporizador así y qué hacer respecto a la concatenación de datos a un archivo ya existente.
Agradezco de antemano a todas las personas que tengan un poco de tiempo para ayudarme a resolver este problema.