Чтение онлайн

на главную - закладки

Жанры

VBA для чайников

Каммингс Стив

Шрифт:

По общепринятому соглашению кнопки Закрыть и Отмена просто прячут или выгружают форму, и ничего больше. Следующие рекомендации помогут определить, какая из этих кнопок лучше подойдет для вашей формы.

* Используйте кнопку Закрыть для форм, которые только отображают информацию или выполняют свою задачу немедленно, без изменения установок программы или модификации переменных, которые будут использоваться в программе позже.

* Используйте кнопку Отмена для форм, которые изменяют переменные или установки программы. После щелчка пользователя на кнопке Отмена диалоговое окно должно закрыться без записи таких изменений - все должно остаться так, как было до открытия диалогового окна. Такая форма должна также иметь кнопку ОК, щелчок на которой подтверждает изменения и вносит их.

Подобно любым другим кнопкам, для того чтобы отвечать на щелчки на них, кнопки Закрыть и Отмена требуют создания процедур обработки события 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

Не забудьте связать кнопку Закрыть и Отмена с клавишей <Esc>. Пользователи привыкли нажимать <Esc> для выхода из диалоговых окон, и вы не должны обманывать их ожиданий. Тем более, что в данном случае не придется создавать процедуру обработки события 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

Чаще всего в процедурах обработки событий приходится заниматься проверкой данных, введенных пользователем с помощью элементов управления, Обычно программа предполагает ввод данных определенного вида. Однако пользователь может ввести любой текст в текстовое поле или поле со списком и выбрать почти любое число с помощью кнопок прокрутки.

В таком случае в процедуру соответствующего элемента управления крайне желательно добавить программный код, проверяющий правильность ввода. Этот программный код должен введенные пользователем данные оценить с точки зрения удовлетворения заданным критериям. Если критерии удовлетворены, программный код сохраняет введенные значения или передает их другой части программы. В противном случае можно отобразить сообщение или как-то по-другому информировать пользователя о том, что возникла проблема (рис. 10.27).

Можно также с помощью этого программного кода конвертировать введенные данные в данные подходящего вида, например сделать все буквы прописными.

Рис. 10.27. Для проверки введенных данных в текстовом поле и отображения этого сообщения об ошибке использовалась процедура обработки события Change

Проверка значений элементов управления требует использования операторов

If. . .Then и Select Case. В следующем простом примере проверяется на допустимость значение элемента управления кнопками прокрутки:

Private Sub spnVolumeControl_Change

If spnVolumeControl.Value = 13 Then

MsgBox "13 не является допустимым значением."

End If

End Sub

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

Момент проверки данных

Используемая процедура

При нажатии любой клавиши

Процедура об работки события Key Press для элемента управления (для выяснения информации о нажатии отдельной клавиши)

При любом изменении значения элемента управления

Процедура обработки события Change (для оценки значения)

По окончании работы пользователя с элементом управления, непосредственно перед переходом к другому

Процедура обработки события Be Fore Update (позволяет отменить обновление данных и вернуть пользователя к текущему элементу управления)

При закрытии формы пользователем

Процедура обработки события click для кнопок ОК или Закрыть в форме

Поделиться:
Популярные книги

Изгой Проклятого Клана. Том 2

Пламенев Владимир
2. Изгой
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Изгой Проклятого Клана. Том 2

Прапорщик. Назад в СССР. Книга 6

Гаусс Максим
6. Второй шанс
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Прапорщик. Назад в СССР. Книга 6

Подросток

Достоевский Федор Михайлович
Проза:
русская классическая проза
9.09
рейтинг книги
Подросток

Драконы

Мартин Джордж Р.Р.
Фантастика:
фэнтези
8.08
рейтинг книги
Драконы

Изгой

Майерс Александр
2. Династия
Фантастика:
фэнтези
попаданцы
рпг
аниме
5.00
рейтинг книги
Изгой

Убей героя

Кудрявцев Леонид Викторович
Фантастика:
детективная фантастика
5.00
рейтинг книги
Убей героя

Полигон

Гостева Ирина
S.T.A.L.K.E.R.
Фантастика:
боевая фантастика
7.78
рейтинг книги
Полигон

Властелин Севера

Корнуэлл Бернард
3. Саксонские хроники
Приключения:
исторические приключения
8.67
рейтинг книги
Властелин Севера

Темный Лекарь 9

Токсик Саша
9. Темный Лекарь
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Темный Лекарь 9

Эпоха Опустошителя. Том VI

Павлов Вел
6. Вечное Ристалище
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Эпоха Опустошителя. Том VI

Эпоха Опустошителя. Том I

Павлов Вел
1. Вечное Ристалище
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Эпоха Опустошителя. Том I

Кодекс Охотника. Книга XVII

Винокуров Юрий
17. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга XVII

Матабар

Клеванский Кирилл Сергеевич
1. Матабар
Фантастика:
фэнтези
5.00
рейтинг книги
Матабар

Лейтенант. Назад в СССР. Книга 8. Часть 1

Гаусс Максим
8. Второй шанс
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Лейтенант. Назад в СССР. Книга 8. Часть 1