MS Access 2003 - Cuadro de mensaje: ¿Cómo puedo responder “ok” de forma automática a través de código

StackOverflow https://stackoverflow.com/questions/2479240

Pregunta

Así que un par de preguntas tontas:

Si incluyo esto en algún evento:

MsgBox " ", vbOkOnly, "This little message box"

podría luego con algo más de código vuelta y 'haga clic en el botón Aceptar. Así que, básicamente, el mensaje BOOX surge automáticamente, y luego desaparece automáticamente?

Sé que es tonto porque quiere saber, ¿por qué quiere el cuadro de mensaje y luego .....

bien a) solo quiero saber si se puede hacer eso, y cuál sería el comando

b) tengo algunas formas básicas (objetos de forma) que se hacen visibles cuando aparece el cuadro de mensaje. Pero sin tener el cuadro de mensaje allí, no hay interrupción temporal de código mientras se espera el botón para hacer clic en él, y por lo tanto los objetos de imágenes bonitas que se hace visible no surtirá efecto en la forma.

Así que realmente no necesito el cuadro de mensaje, sólo la interrupción temporal que muestra los objetos.

Gracias!

¿Fue útil?

Solución

A MsgBox es modal. Sólo hay dos ajustes relacionados con la Modalidad

  • ApplicationModal
  • SystemModal

Así que si el MsgBox está elevado por su aplicación actual, ningún código se ejecutará hasta que haga clic en un botón en el cuadro de mensaje.

La forma de evitar esto es el diseño de su buzón de mensajes mediante un formulario. Usted puede hacer estallar esto y mantenerlo encendido y entonces se puede "clic" cualquier botón que desee en ella.

Si desea un retraso, puede utilizar la API de Win a dormir

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Private Sub ApiSleep(SleepMilliseconds as Long)
    Sleep SleepMilliseconds 
End Sub

Otros consejos

Sé que esto se le preguntó hace un tiempo pero la solución que uso es la siguiente:

CreateObject("WScript.Shell").PopUp "Save Successful!", 1, "Save"

¿Cómo funciona esto es un cuadro de mensaje se muestra al igual que una normal haría sin embargo, tiene su propio sistema de temporizador que significa que puede auto cerrar el cuadro de mensaje sin siquiera hacer nada.

El número 1 significa el número de segundos que desea que mostrar para antes de cerrarse automáticamente.

Yo lo uso para salvar a los procedimientos ya que es una notificación útil que algo ha salvado, pero no requiere que el usuario haga clic en realidad "OK".

De todas formas esto es mis dos centavos por valor de una respuesta. Espero que esto ayude a alguien más también!

Sendkeys "~",false

que desestime el MsgBox (suponiendo que tiene el foco)

Creo que estás en busca de los eventos de pintura, o forzar a una forma de actualización, aunque para lograr lo que realmente quiere hacer!

Edit: Ah carajo, sí, porque es modal se suspendió el código ... D'oh! Como se ha sugerido, o bien escribir su propia, o que tendría que tirar algo en otro hilo para hacerlo, y no tengo ni idea de cómo hacer múltiples subprocesos en MS Access!

Segunda edición: ¿Has mirado en Application.Echo False de suspender y reanudar Application.Echo True pintura diseño?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top