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

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

Жанры

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 для кнопок ОК или Закрыть в форме

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

Жрец Хаоса. Книга ХV

Борзых М.
15. Зов пустоты
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Жрец Хаоса. Книга ХV

По осколкам твоего сердца

Джейн Анна
2. Хулиган и новенькая
Любовные романы:
современные любовные романы
6.47
рейтинг книги
По осколкам твоего сердца

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

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

Иного не желаю. Часть третья

Лошкарёва Виктория Витальевна
5. Оборотная сторона мира
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Иного не желаю. Часть третья

Аляска

Платонова Ольга Николаевна
5.00
рейтинг книги
Аляска

"Дальние горизонты. Дух". Компиляция. Книги 1-25

Усманов Хайдарали
Собрание сочинений
Фантастика:
фэнтези
боевая фантастика
попаданцы
5.00
рейтинг книги
Дальние горизонты. Дух. Компиляция. Книги 1-25

Женщина без лица

Белозерская Алена
1. Опасные связи
Проза:
современная проза
7.00
рейтинг книги
Женщина без лица

Тайны исчезнувших цивилизаций

Зданович Леонид Иванович
Все загадки Земли
Научно-образовательная:
история
культурология
7.33
рейтинг книги
Тайны исчезнувших цивилизаций

Третий

INDIGO
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
Третий

Лета 7071

Полуйко Валерий Васильевич
Проза:
историческая проза
роман
7.00
рейтинг книги
Лета 7071

Я – Малала

Юсуфзай Малала
Документальная литература:
биографии и мемуары
6.80
рейтинг книги
Я – Малала

Избранное

Высоцкий Владимир Семенович
5.00
рейтинг книги
Избранное

Первый Предтеча. Трилогия

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

Цикл "Отмороженный". Компиляция. Книги 1-14

Гарцевич Евгений Александрович
Отмороженный
Фантастика:
боевая фантастика
рпг
постапокалипсис
5.00
рейтинг книги
Цикл Отмороженный. Компиляция. Книги 1-14