Основные приемы программирования форм
Теперь, уяснив, как работают процедуры обработки событий, вы сможете применить свои знания при создании диалоговых окон, которые будут работать так, как хотите вы, и так, как ожидают пользователи. В этом разделе мы обсудим целый ряд сценариев, применяемых при создании диалоговых окон.
Большинство диалоговых окон имеют, как минимум, одну кнопку главной команды и кнопку, убирающую диалоговое окно с экрана. В зависимости от того, что делает диалоговое окно, на этой кнопке обычно написано либо Закрыть, либо Отмена, но вполне допустимы и другие надписи - Выход, Готово, Пропустить, Закончить и т.п. Такая кнопка потребуется любой вашей форме.
По общепринятому соглашению кнопки Закрыть и Отмена просто прячут или выгружают форму, и ничего больше. Следующие рекомендации помогут определить, какая из этих кнопок лучше подойдет для вашей формы.
* Используйте кнопку Закрыть для форм, которые только отображают информацию или выполняют свою задачу немедленно, без изменения установок программы или модификации переменных, которые будут использоваться в программе позже.
* Используйте кнопку Отмена для форм, которые изменяют переменные или установки программы. После щелчка пользователя на кнопке Отмена диалоговое окно должно закрыться без записи таких изменений - все должно остаться так, как было до открытия диалогового окна. Такая форма должна также иметь кнопку ОК, щелчок на которой подтверждает изменения и вносит их.
Подобно любым другим кнопкам, для того чтобы отвечать на щелчки на них, кнопки Закрыть и Отмена требуют создания процедур обработки события Click. В большинстве случаев эти процедуры содержат всего один оператор, как в следующих двух примерах:
Private Sub cmdClose_Click ()
Hide здесь подразумевается ссылка на форму
End Sut
Private Sub cmdCancel_Click ()
Unload frmOptions
End Sub
Для любой кнопки можно использовать метод Hide или оператор Unload. Разница между этими двумя способами закрытия формы обсуждалась в разделах "Как скрыть видимую форму" и "Удаление формы из памяти".
Конечно, процедуры, связанные с кнопками Закрыть и Отмена, могут до закрытия формы сделать что-то еще, например отобразить диалоговое окно, в котором пользователю предлагают подтвердить (или не подтвердить) желание закрыть форму.
Private Sub cmdClose_Cl ick()
Message = "Вы действительно хотите закрыть " _
& "диалоговое окно и отменить все " _
& "внесенные вами изменения?"
If MsgBox(Message, vbYesNo) = vbYes Then
Hide ' закрыть, если пользователь ответил Да
End If ' иначе не делать ничего
End Sub
Не забудьте связать кнопку Закрыть и Отмена с клавишей . Пользователи привыкли нажимать для выхода из диалоговых окон, и вы не должны обманывать их ожиданий. Тем более, что в данном случае не придется создавать процедуру обработки события KeyPress-- просто установите для свойства Cancel значение True в окне свойств.
Представьте себе типичное диалоговое окно. Вы ожидаете, что после щелчка на кнопке ОК программа воспримет введенные в окно данные как окончательные и соответствующим образом изменит внешний вид, поведение или данные программы. После этого форма должна удалить себя с экрана.
В соответствии с этими ожиданиями вы должны создать и процедуру обработки события Click для кнопки ОК. Все, что должен сделать в данном случае программный код,- это передать значения от элементов управления переменным программы или использовать значения элементов управления в условных выражениях. Последняя строка процедуры должна содержать либо метод Hide, либо оператор Unload. В следующих примерах txtCName и txtCAddress представляют текстовые поля. Первых два оператора передают их значения соответствующим переменным программы. Затем программа проверяет состояние выключателя tglSend и, если он включен, выполняет процедуру SendBillToCustomer.
Наконец, она прячет форму:
Private Sub cmdOK_Click()
strCustomerName = txtCName.Value
strCustomerAddress = txtCAddress.Value
' проверка состояния выключателя
If tglSend.Value = True Then
SendBillToCustomer
End If
Hide
End Sub
Чаще всего в процедурах обработки событий приходится заниматься проверкой данных, введенных пользователем с помощью элементов управления, Обычно программа предполагает ввод данных определенного вида. Однако пользователь может ввести любой текст в текстовое поле или поле со списком и выбрать почти любое число с помощью кнопок прокрутки.
Читать дальше