Перед тем как отобразить форму на экране, необходимо загрузить ее в память. При этом Windows посылает форме специальное сообщение, а форма генерирует событие Load. Это событие хорошо подходит для начальных проверок или для изменения положения формы на экране. Например, для выравнивания формы по центру экрана часто используется следующий фрагмент:
Private Sub Form_Load()
Move (Screen.Width - Width) / 2, (Screen.Height - Height) / 2
End Sub
После загрузки форма активизируется, то есть становится активным окном. При этом она генерирует событие Activate. Кроме того, это же событие генерируется и при работе с неактивной формой. Хорошим примером использования события Activate может служить программа для работы с электронной почтой. В процедуру события Activate можно внести код, проверяющий наличие новой почты. В результате при каждом запуске программы будет происходить автоматический поиск новых сообщений.
Событие Deactivate происходит в тех случаях, когда фокус передается другим форме или приложению. Например, при помощи этого события можно свернуть окно приложения при переходе к другой программе. Наконец, событие Unload тоже достаточно важно, потому что оно предоставляет вам последнюю возможность «убрать мусор» за формой. В процедуре события следует закрыть все открытые базы данных или файлы. Тем самым вы предотвращаете напрасный расход памяти при выгрузке формы.
|
|
Событие Resize
Событие Resize происходит, когда пользователь изменяет размеры формы. Чаще всего оно используется для двух целей:
О масштабирования управляющих элементов, размещенных на форме; О восстановления исходных размеров формы.
В обоих случаях используются свойства Height и Width объектов. Пример программы можно взять из описания свойств Height и Width.
ПРИМЕЧАНИЕ Изменить размеры свернутой или развернутой формы невозможно. Чтобы избежать этой ситуации, проще всего установить значения свойств MaxButton и MinButton формы в False.
Событие Unload
Событие Unload по смыслу противоположно Load. Чаще всего процедура этого события используется для того, чтобы спросить у пользователя, действительно ли он желает закрыть форму (хотя процедура другого события, QueryUnload, в данном случае оказывается более удобной). Если вы посмотрите на процедуру события Unload в окне программы, то увидите, что она немного отличается от процедур других событий. За именем процедуры следует аргумент (Cancel As Integer), с его помощью можно отменить выгрузку формы. Следующий пример показывает, как это делается:
1. Создайте новый проект (File > New Project) и выберите значок Standard EXE.
2. Дважды щелкните на форме Form1 в конструкторе, чтобы открыть окно программы.
|
|
3. Выберите из списка событие Unload.
4. Вставьте в процедуру Unload следующий фрагмент:
Private Sub Form_Unload(Cancel As Integer)
If MsgBox("Уверены?", vbYesNo, "Выход?") = vbYes Then
Unload Me
Set Form1 = Nothing
Else
Cancel = 1
End If
End Sub
5. Закройте окно программы и запустите программу командой Run >- Start.
6. На экране появляется пустая форма. Нажмите кнопку закрытия на заголовке; при этом будет сгенерировано событие Unload.
ПРИМЕЧАНИЕ Функция MsgBox отображает диалоговое окно, которое называется окном сообщения. Более подробная информация о ней приведена в уроке 10, «Диалоговые окна».
Поскольку мы добавили фрагмент кода в процедуру события Unload, Visual Basic выполняет его и выводит окно с вопросом, действительно ли вы хотите выйти из программы. Если нажать кнопку Yes, форма закроется. Однако, если вы нажмете кнопку No, программа присвоит параметру Cancel значение 1 и тем самым запретит выгрузку формы.
ПОДСКАЗКА Если приложение работает как редактор (например, текстовый или графический), то задавать вопрос о закрытии следует лишь в том случае, если пользователь не сохранил внесенные изменения. Вы можете включить в процедуру события Unload фрагмент, аналогичный приведенному ранее.
Методы форм
Перед тем как рассматривать конкретные события, давайте выясним, что же такое метод. Методом называется команда, которую вы отдаете объекту. С помощью методов можно приказать объекту выполнить те или иные действия — например, вызывая метод Unload формы, вы заставляете ее выгрузиться из памяти. Ниже приведен перечень методов, связанных с формами:
Circle | Move | PSet | TextHeight |
Cls | PaintPicture | Refresh | TextWidth |
Hide | Point | Scale | Unload |
Item | SetFocus | ZOrder | |
Line | PrintForm | Show |
Show, Hide и Unload — три самых распространенных метода, применяемых в работе с формами. В следующем разделе мы увидим, как они применяются на практике.