Access 2002

Новый экземпляр формы календаря


Она создает переменную frm, присваивает ей указатель на новый экземпляр формы календаря, обрабатывает входной параметр, задающий начальную дату, модифицирует свойства формы (именно этот момент является ключевым!) и вызывает процедуру ShowFormAndWait. Если данная процедура возвращает значение True, функция adhDoCal endarLoop, в свою очередь, возвращает выбранную пользователем дату, а иначе — значение Null.

Процедура ShowFormAndWait (которую вы найдете в том же модуле basCalendar) приведена  7.12. Она выполняется в бесконечном цикле до тех пор, пока форма не будет закрыта или скрыта. Процедура принимает единственный параметр — ссылку на открытую форму. Обратите  на то, что этот параметр объявлен как Form, благодаря чему она может работать с любой формой, а не только с календарем. Учтите только, что процедура не работает, если открыто несколько экземпляров формы, поскольку она определяет, открыта ли форма, используя ее имя.

Итак, процедура ShowFormAndWait присваивает свойству формы Visible значение True, запоминает ее имя и начинает бесконечный цикл. Периодически она проверяет, загружена и видима ли форма. Если ответ на один из этих вопросов оказывается отрицательным, цикл завершается, а процедура возвращает соответствующее значение.

Просмотрев процедуру, вы увидите, что в ней присутствует счетчик и предусмотрен вызов встроенной функции VBA DoEvents. Вызов функции DoEvents дает Access возможность обрабатывать текущие события, пока выполняется процедура. Назначение же счетчика состоит в том, чтобы снизить загрузку процессора на

время, пока пользователь работает с формой. Мы проверяем, как поживает паша форма, только на каждом тысячном шаге цикла, поскольку для такой проверки требуется больше процессорного времени, чем для проверки и увеличения счетчика. Вы можете уменьшить или увеличить это значение.

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