Л А Б О Р А Т О Р Н А Я Р А Б О Т А № 4
Тема: «Организация ввода-вывода с использованием диалоговых окон»
Цель работы:
изучение возможностей организации ввода-вывода с использованием диалоговых окон;
закрепление темы при создании приложений.
Диалоговые окна
В Visual Basic существует специальный вид окон – диалоговые. В распоряжении разработчика имеется хорошо развитый инструментарий для их создания. Диалоговые окна бывают двух типов – модальные и немодальные.
Модальное диалоговое окно – это окно, из которого нельзя перейти в другое окно, не закрыв текущее. Данный вид диалоговых окон используется для выдачи сообщений о ходе работы приложения, его настройки или ввода каких-либо данных, необходимых для работы. Модальное диалоговое окно вынуждает пользователя совершать некоторые действия или отвечать на запрос приложения вводом информации или выполнением какого-либо действия.
Немодальное диалоговое окно – это окно, позволяющее перемещать фокус на другое окно или форму без закрытия текущего окна. Данный тип диалоговых окон используется редко.
Простейшие из диалоговых окон – это окна сообщений и окна, предназначенные для ввода информации.
Рассмотрим более подробно окно сообщений и окно, предназначенное для ввода информации.
1.1. Окно сообщения MessageBox
Вид окна сообщения (рис. 4.1, 4.2) может быть различным, но в его состав всегда входят:
- текст сообщения;
- заголовок;
- значок;
-
набор кнопок.
Рис. 4.1 Рис. 4.2
Диалоговое окно сообщения не требует проектирования. Его можно вызвать как процедуру и как функцию.
Синтаксис команды:
MsgBox prompt [, buttons] [, title] [, helpfile, context]
Пример использования (рис. 4.1):
MsgBox “Здравствуй, пользователь”, vbExclamation, “Приветствие”
Синтаксис функции:
Возвращаемое_значение = MsgBox (prompt [, buttons] [, title] [, helpfile, context])
Пример использования (рис. 4.2):
rez = MsgBox (“Закончить?”, vbQuestion + vbYesNo, “End”)
где:
prompt – текст сообщения в диалоговом окне. Максимальная длина текста 1024 символа. Строковое значение prompt может содержать несколько строк. Для разделения строк допускается использование символа возврата каретки (Chr(13)), символа перевода строки (Chr(10)) или комбинации этих символов (Chr(13) & Chr(10));
buttons – числовое выражение, которое задает параметры для кнопок управления и значков в диалоговом окне и составлено из констант, указанных в табл. 1 и 2. Если значение не указано, то по умолчанию присваивается значение 0;
title – текст заголовка диалогового окна;
helpfile – ссылка на файл справочной системы;
context – ссылка на содержание в файле справочной системы.
Значение параметра buttons формируется из нескольких частей, которые можно складывать:
buttons = icon + button + default + modal + extras
Для категорий icon, button, default и modal можно использовать только одно из допустимых значений. А для категории extras допускается применение комбинации значений.
Таблица 1. Константы параметров для значков диалогового окна сообщения (категория icon)
Значок |
Константа |
Значение |
Тип сообщения |
|
vbExclamation |
48 |
Предупреждение |
|
vbQuestion |
32 |
Запрос |
|
vbInformation |
64 |
Информация |
|
vbCritical |
16 |
Ошибка |
Таблица 2. Константы параметров наличия кнопок в окне сообщения и установки фокуса на кнопку
(категории button, default, modal и extras)
Константа |
Значение |
Набор кнопок в диалоговом окне |
Категория |
vbOkOnly |
0 |
ОК |
button |
vbOkCancel |
1 |
ОК, Отмена |
|
vbAbortRetryIgnore |
2 |
Прервать, Повтор, Пропустить |
|
vbYesNoCancel |
3 |
Да, Нет, Отмена |
|
vbYesNo |
4 |
Да, Нет |
|
vbRetryCancel |
5 |
Повтор, Отмена |
|
vbDefaultButton1 |
0 |
Устанавливает фокус на первой кнопке |
default |
vbDefaultButton2 |
256 |
Устанавливает фокус на второй кнопке |
|
vbDefaultButton3 |
512 |
Устанавливает фокус на третьей кнопке |
|
vbDefaultButton4 |
768 |
Устанавливает фокус на четвертой кнопке |
|
vbAplicationModal |
0 |
Назначает модальность приложения. Диалоговое окно будет модальным, то есть требующим обязательного закрытия для перехода в другие окна |
modal |
vbSystemModal |
4096 |
Назначает модальность системы. Диалоговое окно будет модальным на уровне системы, то есть пока диалоговое окно не закрыто, в любое другое приложение перейти нельзя |
|
vbMsgBoxHelpButton |
16384 |
Добавляет в диалоговое окно кнопку Справка |
extras |
vbMsgBoxSetForeground |
65536 |
Объявляет диалоговое окно фоновым окном |
|
vbMsgBoxRight |
524288 |
Выравнивает текст в диалоговом окне по правому краю |
|
vbMsgBoxRtlREading |
1 048 576 |
Переворачивает текст для чтения справа налево |
Примечание. Заметим, что каждое из приведенных в таблицах значений слагаемых можно использовать в форме именованной константы, имя которой мнемонически указывает назначение данного слагаемого. Использование именованных констант в данном случае если и не облегчает программирование (их слишком много для запоминания), то облегчает последующее чтение кода.
В зависимости от выбора кнопки диалоговое окно MsgBox возвращает одно из значений, заданных системными константами. Это необходимо для анализа нажатой кнопки и выполнения соответствующих действий в программе. В исходном коде для этого можно использовать константы, указанные в табл. 3.
Таблица 3. Значения констант, возвращаемые кнопками окна сообщения
Кнопка |
Константа |
Значение при нажатии на кнопку |
OK |
vbOk |
1 |
Отмена |
vbCancel |
2 |
Прервать |
vbAbort |
3 |
Повтор |
vbRetry |
4 |
Пропустить |
vbIgnore |
5 |
Да |
vbYes |
6 |
Нет |
vbNo |
7 |
Примечание. Если в окне сообщения есть только аргумент prompt, то по умолчанию имя окна сообщения будет Project1, значок отсутствует и имеется единственная кнопка OK (при нажатии на которую функция возвращает значение 1, если обращение входит в состав выражения).
Пример. Введите в командном окне среды проектирования Immediate (пункт меню View, Immediate Window) следующую команду и нажмите клавишу Enter:
M
sgBox
"Приветствуем Вас!", 64,"Окно
сообщений"
В ответ получите диалоговое окно (рис. 4.3):
Рис. 4.3
Отредактировав команду следующим образом:
MsgBox "Ошибка ввода данных!", 48+5,"Окно сообщений"
вы получите диалоговое окно (рис. 4.4):
Р
ис.
4.4
Примечание. Окно Immediate (Непосредственное выполнение) предназначено для ручного ввода и выполнения команд Visual Basic 6.
