Иллюстрированный самоучитель по Microsoft Outlook 2002

Инициализация формы

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

Рассмотрением инициализации подобных свойств мы и займемся в этой главе, но для начала несколько слов о форме как таковой. Если рассматривать форму с позиций программирования, то она представляет собой не что иное, как класс VBA. Членами этого класса являются элементы управления, расположенные на форме, а методами – show (показать форму), Hide (скрыть форму) и т. д. Более того, пользователь может добавлять собственные члены и методы.

Помимо этого форма обладает и рядом процедур реакции на событие, стандартными из которых для всех классов VBA являются initialize и Terminate (см. раздел "Классы и объекты").

Вернемся к нашей задаче и вспомним, что нам необходимо проинициализировать три списка нашей формы, а именно: series, author и duration. Если duration фиксирован и состоит из 12 элементов (12 месяцев), то относительно списков авторов и серий так сказать нельзя. Количество членов в группе писателей может увеличиваться и уменьшаться, ровно также дело обстоит и с сериями. Исходя из этого пользователь должен иметь возможность, не модифицируя кода программы, изменить количество элементов любого из списков.

В следующих разделах подробно описываются способы инициализации списков.

Статическое заполнение списка

Начнем, пожалуй, с самого простого статического заполнения списка duration, который просто состоит из двенадцати цифр, одну из которых пользователь (редактор) должен выбрать в качестве ориентировочной длительности проекта.

Программа 22.1. Статическое заполнение списка.

{На панели Project} 1R UserForml & View Code {В окне кода}
Private Sub Init_Duration()
Инициализация списка duration With duration
For i = 1 To 12
.Addltem i 
Next i
.Listlndex = 0 
End With 
End Sub

Поясним код программы. Во-первых, мы создаем процедуру, которую впоследствии будем вызывать из конструктора формы. Во-вторых, используя оператор with, обращаемся к объекту формы duration. И наконец, в цикле от 1 до 12 инициализируем список.

После того как мы создали процедуру, ее необходимо вызвать. Естественно, что все процедуры инициализации мы будем размещать в конструкторе формы – процедуре – реакции на событие initialize.

Программа 22.2. Вызов процедуры из конструктора.

Private Sub UserForm_Initialize()
Init_Duration End Sub

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

Работа с файлами

Следующий список который необходимо инициализировать – series. В отличие от duration, как было отмечено выше, этот список может изменяться, поэтому мы решили хранить список с названием серий в специальном файле bookseries.ini и забирать информацию для инициализации именно оттуда.

Иллюстрированный самоучитель по Microsoft Outlook 2002 › Программирование в Outlook › Инициализация формы
Рис. 22.4. Архитектура файла bookseries.ini

Таким образом, пользователю необходимо лишь добавить название новой серии в данный файл, как сделанные изменения тут же отобразятся в форме. Архитектура файла инициализации показана на рис. 22.4.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.