Материал: Программирование на языке Visual Basic для приложений. Подвальный С.Л., Рог А.И

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

 

 

Продолжение табл. 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

Источник: https://studfile.net/preview/16565567/