MS Access 2003 - Окно сообщений: как я могу автоматически ответить «ок» через код - PullRequest
1 голос
/ 19 марта 2010

Итак, пара глупых вопросов:

Если я включу это в какое-то событие:

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

Могу ли я тогда еще с кодом повернуть и нажать кнопку ОК. Так что в основном сообщение boox автоматически всплывает, а затем автоматически уходит?

Я знаю, это глупо, потому что ты хочешь знать, зачем тебе тогда окно сообщения .....

ну а) я просто хочу знать, можете ли вы это сделать, и какой будет команда

б) У меня есть некоторые базовые фигуры (объекты-фигуры), которые становятся видимыми, когда появляется окно сообщения. Но без наличия окна сообщения там нет никакого временного нарушения кода во время ожидания нажатия кнопки, и поэтому те красивые объекты изображения, которые становятся видимыми, влияют на форму.

Так что мне действительно не нужно окно сообщения, только временное нарушение, которое показывает объекты.

Спасибо!

Ответы [ 3 ]

5 голосов
/ 19 марта 2010

A MsgBox является модальным. Существует только две настройки, связанные с модальностью

  • ApplicationModal
  • SystemModal

Так что, если Msgbox всплывает в вашем текущем приложении, код не будет выполняться, пока вы не нажмете кнопку в окне сообщения.

Способ обойти это - создать собственное окно сообщения, используя форму. Вы можете всплыть и оставить его включенным, а затем «щелкнуть» по нему любой кнопкой.

Если вы хотите задержку, вы можете использовать Win API для сна

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

Private Sub ApiSleep(SleepMilliseconds as Long)
    Sleep SleepMilliseconds 
End Sub
1 голос
/ 11 апреля 2013

Я знаю, что об этом недавно спросили, но я использую следующее решение:

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

Как это работает, окно сообщения отображается так же, как и обычное, однако у него есть собственный системный таймер, что означает, что вы можете автоматически закрыть окно сообщения, даже не делая ничего.

Число 1 показывает, сколько секунд вы хотите, чтобы оно показывалось перед автоматическим закрытием.

Я использую это для процедур сохранения в качестве полезного уведомления о том, что что-то сохранено, но не требует, чтобы пользователь фактически нажимал «ОК».

В любом случае, это мой ответ на две копейки. Надеюсь, это поможет кому-то еще!

0 голосов
/ 19 марта 2010
Sendkeys "~",false

Должен закрыть msgbox (при условии, что он имеет фокус)

Я думаю, что вы ищете события рисования или принудительно обновляете форму, чтобы достичь того, что вы действительно хотите сделать!

Редактировать: А, черт возьми, да, потому что это модальный код приостановлен ... черт! Как и предлагалось, либо напишите свой собственный, либо вам придется добавить что-то в другой поток, чтобы сделать это, и я не знаю, как сделать многопоточность в MS Access!

Второе редактирование: Вы смотрели на Application.Echo False для приостановки и Application.Echo True для возобновления раскраски?

...