Access 2002

Метод docmd.dpenform


Как вы помните, для этого применялся метод DoCmd.DpenForm, которому в параметре WindowMode передавалась константа acDialog. При этом выполнение кода, из которого осуществлялся вызов, приостанавливалось до закрытия или отмены отображения формы. Следует отметить, что указанный способ открытия формы имел существенный недостаток: он не позволял открыть форму невидимой, настроить ее свойства и только потом вывести на экран. Таким образом, форма открывалась как есть, безо всякой программной настройки в соответствии с конкретной ситуацией. (Точнее, настройку можно было выполнить, но достаточно сложным способом, требующим участия самой формы и передачи ей параметров.)

В настоящем разделе описывается технология, позволяющая обойти это ограничение. Задача состоит в том, чтобы приостановить работу кода на время, пока форма отображается на экране, а когда выполнение кода возобновится, выяснить, как пользователь закрыл форму. Мы написали функцию adhDoCalendarLoop, которая выводит на экран календарь в виде диалогового окна. Она может заменить функцию adhDoCalendar, рассмотренную нами в разделе «Создание всплывающих форм». Вы найдете ее в модуле basCalendar. (Роль функции adhDoCalеп- da rLoop чисто демонстрационная, поскольку в данном случае нет никаких причин вызывать для вывода календаря именно ее.) Функция adhDoCal endarLoop незаметно открывает один экземпляр формы frmCalendar, модифицирует его свойства, а затем вызывает хранящуюся в том же модуле процедуру ShowFormAndWait. Последняя выводит форму на экран и ждет, пока пользователь ее закроет. Если пользователь закрыл форму с помощью кнопки ОК, процедура ShowFormAndWait возвращает значение True, а если посредством кнопки Cancel — False.

Код функции adhDoCal endarLoop приведен  7.11.

Комментарии закрыты