Примеры программ модуля класса формы
Рассмотрим несколько простых примеров использования свойств и методов формы с помощью процедур обработки событий. Будем инициировать события, описанные в табл. 9.9, а в ответ на них с помощью окна функций MsgBox будем сообщать о типе события или менять видимые свойства формы. Начнем с события Click, так как процедуру обработки этого события легче всего создать: достаточно дважды щелкнуть на форме (используем созданную в начале главы форму) в режиме разработки, и появится шаблон процедуры. Запишем после заголовка процедуры следующий оператор MsgBox ("Событие: Click"):
Private Sub UserForm_Click()
MsgBox ("Событие: Click")
End Sub
После запуска формы на выполнение на экране поверх формы появится форма. Щелкнув на ней мышью, на экране появится сообщение в виде сообщения "Событие: Click"
Если даже не часто будет нужно использовать подобное событие для формы, не стоит забывать о такой возможности. А еще лучше поступать следующим образом. Всегда использовать это событие на случай, когда пользователь форм при попытке щелкнуть на каком либо элементе управления не совсем точно позиционирует курсор мыши. Если при этом будет выполняться процедура обработки события Click для формы с выводом предупреждающего сообщения о недостаточной уверенности в действиях пользователя, с приложением станет приятно работать.
Рассмотрим событие Activate. Запишем в модуле рассматриваемой формы следующую процедуру:
Private Sub UserForm_Activate()
MsgBox ("Событие: Activate")
End Sub
После запуска формы и ее появления на экране появится сообщение о том, что произошло событие Activate.
Рассмотрим события Deactivate и Terminate. Первое из них инициируется всякий раз, когда форма перестает быть активной, а второе – когда форма выгружается из памяти. Процедура обработки события Terminate просто добавляется к имеющейся коллекции программ формы UserForml и выполняется при завершении работы с формой. Для демонстрации же события Deactivate необходимо, не выходя из приложения, сделать форму UserForml неактивной. Это можно осуществить, если активной станет другая форма. И ее надо создать.
Создадим новую форму либо при помощи кнопки Insert UserForm, либо командой Insert ® UserForm. Пусть она имеет имя, которое ей присваивается по умолчанию: UserForm2 Наметим план тестирования:
1. Загружаем форму UserForml.
2. Событие Click формы UserForml вызывает метод Show для загрузки фомы UserForm2.
3. Загрузка/выгрузка формы UserForm2 не сопровождаются никакими событиями.
4. Форма UserForml имеет процедуры обработки событий: Click, Activate, Deactivate, Terminate.
Для выполнения поставленной задачи в модуль формы UserForml необходимо поместить код листинга 43.
Пример 43. Процедуры событий UserForml.
'Обработчик события Click формы UserForml
Private Sub UserForm_Click()
'Вывод окна сообщения на экран:
MsgBox ("Событие: Click. Выводим UserForm2")
'Загрузка формы UserForm2:
UserForm2.Show
End Sub
'Обработчик события Activate формы UserForml
Private Sub UserForm_Activate()
'Вывод окна сообщения на экран:
MsgBox ("Событие: Activate для формы UserForml")
End Sub
Private Sub UserForm_Deactivate()
'Вывод окна сообщения на экран:
MsgBox ("Событие: Deactivate для формы UserForml")
End Sub
Private Sub UserForm_Terminate()
'Вывод окна сообщения на экран:
MsgBox ("Событие: Terminate для формы UserForml")
End Sub
После запуска формы на выполнение можно проследить за инициализацией всех четырех событий. Сразу после за грузки UserForml выдается сообщение "Событие: Activate для формы UserForml" (процедура UserForm_Activate). Щелчок на форме приводит к выводу сообщения "Событие: Click. Выводим UserForm2" (процедура UserForm_Clic), загрузке формы UserForm2 (процедура UserForm_Click) и выводу сообщения "Событие: Deactivate для формы UserForml" (процедура UserForm_Deactivate) в результате того, что форма UserForm1 становится неактивной, Если бы была записана процедура события Activate и для формы UserForm2, то один щелчок мыши вызвал бы инициализацию трех событий. При выгрузке из памяти формы UserForml на экран дается сообщение процедуры UserForm_Terminate.
Событие Initialize инициализируется при загрузке формы при помощи оатора Load или метода Show. При запуске формы это событие не инициализируется. Это событие следует использовать при первой загрузке формы для установки каких-либо свойств формы ее элементов управления. В примере 44 для этого coбытия устанавливается свойство формы BackColor.
Для загрузки формы UserForm2 использется форма UserForml с программой обработки событий из примера 43. В примере 44 для установки свойства формы BackColor используется функция RGB, которая возвращает RGB-значение типа Long, используемое далее для присвоения значению UserForm2.BackColor. Синтаксис функции RGB:
RGB(red, green, blue)
Именованные аргументы:
Аргумент | Описание |
Red | Обязательный; тип: Variant (Integer).Число в диапазоне 0-255; представляет красный компонент цвета |
Green | Обязательный; тип: Variant (Integer).Число в диапазоне 0-255; представляет зеленый компонент цвета |
Blue | Обязательный; тип: Variant (Integer).Число в диапазоне 0-255; представляет синий компонент цвета |
Пример 44. Процедуры событий UserForm2
Dim sRED, sGREEN, sBLUE ' переменные задания цвета формы
'Процедура обработки события Initialize
'Инициализируется один раз: при загрузке
Private Sub UserForm_Initialize()
'задаем начальный цвет формы
sRED = 100
sGREEN = 100
SBLUE = 200
UserForm2.BackColor = RGB(sRED, sGREEN, sBLUE)
End Sub
'Процедура обработки события Click
'При каждой инициализации меняет цвет формы
'При недопустимых значениях sRED, sGREEN, sBLUE
'выдает ошибку времени исполнения
Private Sub UserForm_Click()
Dim i
'Меняем цвет формы:
sRED = sRED + 20
sGREEN = sGREEN +10
sBLUE = sBLUE - 20
i = RGB(sRED, sGREEN, sBLUE)
UserForm2.BackColor = i
'Изменить заголовок формы:
UserForm2.Caption = "Цвет: " & Str(i)
End Sub
После вывода формы с именем UserForm2 на экран событие Click , будет приводить к изменению цвета и заголовка формы.
Дата добавления: 2015-08-14; просмотров: 670;