Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УчебноеПособие по VB_6.doc
Скачиваний:
57
Добавлен:
24.12.2018
Размер:
3.17 Mб
Скачать

События формы

Формы могут распознавать более 20 различных событий.

События Click, DoubleClick служат для обработки одиночного и двойного щелчка мыши.

Как уже известно, с каждым событием , связана процедура - обработчик событий. События генерируются в ответ на действия пользователя – внешние события или генерируются системой - системные события. Например реакция на щелчок мыши по форме реализуется в виде процедуры обработки события Click формы:

Private Sub Form_Click ()

<текст программы>

End Sub.

Основные события формы, как правило, обрабатываются в таком порядке: Initialize, Load, Activate, Deactivate, Query Unload, Unload, Terminate.

Событие Initialize используется, обычно, для подготовки приложения к работе. В обработчике этого события переменным присваивают начальные значения, расставляют элементы управления на форме и масштабируют их. Данное событие возникает в момент создания экземпляра формы (до её загрузки или отображения). Однако оно генерируется лишь один раз в течение всего сеанса работы приложения.

Внимание! Если какой-то код должен выполняться несколько раз, то его нельзя помещать в обработчик данного события.

Событие Initialize генерируется, например, при загрузке формы, её показе, а также при возвращении значения свойства (то есть какому-то свойству объекта закрытой формы присваивается программным путем некоторое значение) или вызове метода, определённого в форме. Например, событие Initialize генерируется при вводе команд:

frmMyForm.Show

или

Load frmMyForm

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

Событие Load используется для выполнения каких-либо действий до вывода формы на экран. Оно также позволяет присвоить исходные значения свойствам формы и её элементам управления. Это событие возникает при каждой загрузке формы в память. При первой загрузке событие Load следует за событием Initialize. Событие Load генерируется также в результате применения оператора Load или Show, а также после ссылки на свойства, методы или элементы управления не загруженной формы.

Пример 2.1.: Добавление элементов к списку

Private Sub Form_Load ( )

Dim i As Integer

For i=2 tо 5

Load txtText1(i)

txtText1(i).Text = “Текстовое окно № ”+Str$(i)

Next i

End Sub

События Activate /Deactivate. Эти события возникают при работе с несколькими формами. Событие Activate возникает, когда фокус ввода переходит на данную форму от другой формы того же приложения. При этом форма должна быть видима. Например, форма, загруженная оператором Load, остаётся невидимой, пока не примените метод Show или не установите свойство Visible формы как True. Событие Activate генерируется от события Got Focus - установка фокуса. Событие Deactivate происходит тогда, когда фокус ввода переходит с данной формы на другую форму этого же приложения.

Событие QueryUnLoad полезно, если нужно узнать, как именно пользователь закрывает форму. Данное событие происходит перед событием Unload. Событие QueryUnLoad происходит в следующих случаях:

- из системного меню формы выбрана команда Close;

- в программе выполняется оператор Unload;

- закрывается дочерняя MDI-форма, так как закрывается основная MDI-форма.

Пример 2.2. Использование события QueryUnload для контроля за закрытием формы.

Private Sub Form _QueryUnload(Cancel As Integer, UnloadMode As Integer)

If Unload Mode<>vbFormCode Then

MsgBox ”Если хотите выйти, то нажмите кнопку Close’’

Cancel = True ‘форма остаётся открытой’.

End If

End Sub.

Чтобы предотвратить выгрузку формы, аргументу Cancel присвоено значение True.

Событие Unload генерируется перед событием Terminate. Обработчик события Unload можно использовать для проверки того, надо ли выгрузить форму или для определения операций, выполняемых при выгрузке формы. Можно также включить программу проверки уровня формы, необходимую для закрытия формы или сохранения данных в файле. В обработчик события Unload можно добавить оператор End – он гарантирует выгрузку всех форм до завершения программы.

Присвоение аргументу Cancel любого ненулевого значения предотвращает удаление формы, но не запрещает другие события вроде выхода из среды Windows. Чтобы не допустить выхода из Windows, необходимо использовать событие QueryUnload.

Событие Terminate генерируется, когда из памяти удаляются все ссылки на экземпляр формы. Чтобы убрать из памяти переменные этой формы и освободить занимаемые системные ресурсы, присвойте объектной переменной формы значение Nothing:

Set frmMyForm = Nothing

Для всех объектов, кроме классов, событие Terminate генерируется после события Unload.