MS Access 2003 – Окно сообщения:Как я могу автоматически ответить «ОК» через код

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

Вопрос

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

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

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

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

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

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

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

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

Спасибо!

Это было полезно?

Решение

А MsgBox является модальным.Есть только две настройки, связанные с модальностью.

  • ПриложениеМодальный
  • Системныймодальный

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

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

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

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

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

Другие советы

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

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

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

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

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

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

Sendkeys "~",false

Следует закрыть окно сообщения (при условии, что оно имеет фокус)

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top