Access 2002

Функциональная часть


На экране появится всплывающая форма frmSelectLabel с предложением выбрать наклейку, с которой начнется распечатка. После того как вы сделаете выбор, форма исчезнет и на экран будет выведен отчет, начинающийся с указанной вами наклейки.

Функциональная часть данного примера воплощена в модуле класса SkipLabels. Объект этого класса создается и настраивается в процедуре обработки события отчета Open. Его задача — узнать у пользователя, с какой позиции следует начинать печать наклеек. Вы же в обработчике события Close должны присвоить переменной SkipLabels значение Nothing.

Значения, которые вы присваиваете свойствам объекта SkipLabels, связывают его с конкретным отчетом и указывают его размерность: сколько наклеек выводится в нем по вертикали и по горизонтали. Полный перечень свойств класса SkipLabels вместе с их описанием приведен в  8.12.

Неужели это весь код, который нужен для выполнения нашей задачи? Как такое возможно? Что заставляет отчет пропустить печать заданного количества наклеек — ведь мы не писали обработчиков никаких других его событий, кроме события Open? В модуле отчета их действительно нет, но это еще не значит, что их нет совсем. Обработчик события Format области данных отчета помещен в модуль класса Ski pLabel s и связан с отчетом посредством переменой, объявленной в этом же модуле с ключевым словом WithEvents. Этот обработчик использует свойства раздела, доступные во время выполнения, для управления раскладкой наклеек на странице. (Подробнее об использовании ключевого слова WithEvents рассказывается в главе 3.) Однако вот интересная проблема: в Access нет специального объекта Section для отчетов, только универсальный объект Section, используемый как в отчетах, так и в формах.

Почему это имеет для нас значение? Потому, что если мы хотим обрабатывать в модуле класса Ski pLabel s событие области данных отчета Format, нам нужна ссылка на объект, генерирующий это событие. А объект Section этого не делает.

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