|
|
Продолжение табл. 7.6 |
SaveAs |
Сохраняет документ в |
Document |
|
другом файле |
|
Select |
Выбирает указанный |
Bookmark, Document, |
|
объект |
Field и в др. объектах |
8. ГРАФИЧЕСКИЙ ИНТЕРФЕЙС
8.1. Формы пользователя
Диалоговое окно в VBA создается добавлением в проект объекта UserForm. Объект UserForm - это пустое диалоговое окно. Настройку диалогового окна можно выполнить добавлением к объекту UserForm (обычно называют просто форма) элементов управления. Каждому объекту UserForm присущи определенные свойства, методы и события, которые он наследует от класса объектов UserForm. Каждый объект UserForm включает в себя также модуль класса, в который вы можете добавлять собственные методы и свойства или код обработки событий формы.
Первый шаг в создании пользовательского диалогового окна состоит в добавлении к проекту новой формы. Форма содержит рабочую область, в которую вы можете поместить элементы, необходимые для выполнения некоторого диалога пользователя с приложением. Поскольку объекты UserForm хранятся в коллекции UserForms проекта, они являются частью проекта.
Для добавления к проекту новой формы используйте ко-
манду VB-редактора Insert | UserForm (Вставка | UserForm).
Редактор VB добавляет к текущему проекту новую форму, присваивая ей по умолчанию имя UserFormN и используя ту же систему нумерации, что и для модулей. Редактор VB выводит новую форму в режиме разработки. В режиме разработки можно добавлять или удалять элементы управления к форме, устанавливать свойства формы или ее элементов управления и выполнять другие манипуляции с внешним видом формы в интерактивном режиме. Когда форма выведена и используется
123
как часть выполняющейся программы, она находится в режиме
выполнения.
Когда форма выводится на экран в режиме разработки, можно протестировать ее поведение, используя команду Run | Run Sub/UserForm (Запуск | Запуск подпрограммы/UserForm).
После этого редактор VB выведет форму в режиме выполнения, и все ее элементы управления будут активными. Однако следует помнить, что любой код, используемый формой, хранящийся не в модуле класса формы, не может быть инициализирован. При запуске формы инициализируется только код, находящийся в модуле класса формы. Переменные в стандартных модулях необязательно будут инициализироваться. В результате этого, если форма не является полностью независимой, некоторые из программ связанных с ней, могут не выполняться, выдавая сообщения о различных runtime-ошибках.
8.2. Свойства объекта UserForm
Форма как объект имеет некоторые встроенные свойства, и вы можете устанавливать эти свойства или программным образом, или в Properties Window (окне свойств) редактора VB. Строго говоря, данные способы изменения свойств форм не являются эквивалентными. Некоторые из свойств могут быть установлены только посредством Properties Window. Программным способом свойства форм устанавливаются таким же образом, как и свойства других объектов: путем присвоения свойству нового значения.
Таблица 8.1 Часто используемые свойства объектов UserForm
Свойство Описание
ActiveControl Возвращает объектную ссылку на элемент управления, находящийся в фокусе в данный момент. Только для чтения
BackColor Целое типа Long определяет цвет фона формы. Самый простой способ установить это свойство - использовать Properties Window;
124
|
Продолжение табл. 8.1 |
|
|
чтобы выбрать желаемый цвет (если необхо- |
|
|
димо), можно скопировать номер цвета из |
|
|
Properties Window в свою программу |
|
Caption |
Текст, выводимый в качестве заголовка фор- |
|
|
мы. Запись/Чтение |
|
Controls |
Возвращает коллекцию всех элементов |
|
|
управления формы. Только для чтения |
|
Cycle |
Определяет, должно ли нажатие клавиши та- |
|
|
буляции вызывать последовательный выбор |
|
|
всех элементов управления во всех группах и |
|
|
на каждой странице многостраничных эле- |
|
|
ментов управления или только в пределах |
|
|
текущей группы или страницы. Может со- |
|
|
держать одну из двух встроенных констант: |
|
|
fmCycleAllForms или fmCycleCurrentForm. |
|
|
Чтение/Запись |
|
Enabled |
Содержит значение типа Boolean, указы- |
|
|
вающее, доступна ли форма. Если его значе- |
|
|
ние равно False, ни один из элементов управ- |
|
|
ления формы не доступен. Чтение/Запись. |
|
Font |
Возвращает ссылку на объект Font, посред- |
|
|
ством которого вы можете выбрать парамет- |
|
|
ры шрифта формы или элемента управления |
|
ForeColor |
То же самое, что и свойство BackColor, но |
|
|
устанавливает цвет, используемый для пе- |
|
|
реднего плана (обычно - это цвет текста) |
|
|
объекта формы |
|
8.3. Методы объекта UserForm.
Всякий раз, создавая в проекте новый объект UserForm, вы создаете новый подкласс объекта UserForm. Любые процедуры или функции, написанные вами в разделе General (общий) модуля класса, относящегося к форме, становятся дополнительными методами для отдельного подкласса объекта. Можно создать для формы новые свойства, добавив в ее мо-
125
дуль класса процедуры Property Get и Property Let. Можно создавать экземпляры подкласса вашей UserForm с помощью оператора Dim и ключевого слова New. Однако чаще всего вы будете манипулировать объектом формы при помощи стандартных методов и свойств класса UserForm и при помощи собственных процедур обработки событий для определенной вами формы и ее элементов управления.
В табл. 8.2 перечислены наиболее часто используемые методы для объектов UserForm, которыми вы можете воспользоваться, и кратко изложены их свойства. Эти методы будут доступны для каждой формы, которую вы добавляете в свой проект.
|
Таблица 8.2 |
|
Методы для объектов UserForm |
Метод |
Назначение |
Copy |
Копирует выделенный в элементе управления |
|
текст в буфер обмена Windows |
Cut |
Вырезает выделенный в элементе управления |
|
текст и помещает его в буфер обмена Windows |
Hide |
Скрывает UserForm, не выгружая ее из памяти, |
|
сохраняя значения элементов управления формы |
|
и всех переменных, объявленных в модуле класса |
|
формы |
Paste |
Вставляет содержимое буфера обмена Windows в |
|
текущий элемент управления |
PrintForm |
Выводит на используемый в Windows по умолча- |
|
нию принтер изображение формы, включая все |
|
данные, введенные в элементы управления |
Repaint |
Перерисовывает форму, выведенную на экран. |
|
Используйте этот метод, если хотите перерисо- |
|
вать форму, не ожидая, когда она будет перери- |
|
сована через обычный период времени |
Show |
Выводит форму на экран. Если форма еще не за- |
|
гружена в память, то данный метод сначала ее |
|
загружает |
126
Синтаксис метода Show: FormName.Show
В данной синтаксической конструкции FormName может быть любым объектом UserForm текущего проекта. FormName - имя формы в том виде, в каком оно отображается в Project Explorer.
Если форма в данный момент не загружена в память, метод Show загрузит и выведет на экран. Если форма уже загружена, метод Show просто выведет ее экран. В любом случае этот метод выводит форму и затем передает ей правление. Форма будет оставаться на экране до тех пор, пока не будет выполнен метод Hide объекта UserForm или форма не будет выгружена при помощи оператора Unload.
Все формы VBA являются модальными (modal) приложениями, это означает, что вы не сможете выполнить какоелибо другое действие в приложении до тех пор, пока форма диалога не будет закрыта или скрыта.
Когда VBA выполняет метод Show для отображения формы диалогового окна, процедура, содержащая вызов метода Show, приостанавливается до тех пор, пока выведенная форма не будет закрыта пользователем. Однако VBA будет выполнять программу для любых событийных процедур в модуле класса формы.
8.4. События и событийные процедуры
Событие (event) - это что-то, что может произойти с диалоговым окном или элементом управления диалогового окна. Типичные примеры событий: щелчок на кнопке, переключателе и т.д. Другие примеры событий: изменение содержимого окна редактирования или выбор элемента списка. Щелчок мышью, нажатие клавиши и действия внутренние для вашего компьютера, - все они запускают или, иными словами, влекут за собой события.
Использование событий позволяет создавать действительно диалоговые приложения. В таких приложениях все
127