ДИАЛОГОВЫЕ ОКНА
Существует несколько типов диалоговых окон, которые необходимы для поддержания в программе интерактивного режима работы конечного пользователя (вывод сообщений пользователю, прием и интерпретация указаний, введенных пользователем, и др.).
Диалоговые окна для обмена сообщениями
Встроенная функция MsgBox() обеспечивает создание диалоговых окон различных типов. 1. Простое окно-сообщение
MsgBox ("строка_сообщения")
Если в сообщении должно присутствовать значение переменной или элемента массива переменной, элемент структуры пользовательского типа данных и т.п., следует преобразовать значения в строковый тип и обеспечить конкатенацию строк.
Пример 19.37. Вывод сообщения о значении переменной
Текст программы |
Комментарий |
Option Explicit |
Обязательность объявления всех |
|
переменных в модуле перед их |
|
использованием |
Sub Msg_Priim() |
Объявление процедуры |
Dim a As Single |
Объявление переменной |
Randomize |
Запуск генератора случайных чисел |
|
Присвоение переменной значения |
a=rnd |
случайного числа |
MsgBox "Значение |
Вывод сообщения |
|
случайного числа " & Str(a) |
Конец процедуры |
End Sub |
|
В результате выполнения процедуры будет выведено окно (рис. 19.23).
599
Рис. 19.23. Окно-сообщение
2. Окно-сообщение с командными кнопками Общий формат оператора:
MsgВох("строка_сообщение"[, <кнопки>] [, "заголовок_окна"] [, <файл-подсказки>, <контекст>])
где <строка_сообщение> |
- максимальная длина строки – 1024 символа; |
<кнопки> |
- число, являющееся суммой кодов выбранных типов кнопок и |
|
пиктограммы, или имена кнопок; |
<заголовок_окна> |
- строка символов; |
<файл-подсказки> |
- имя файла-подсказки для контекстно-зависимой помощи при работе в |
|
окне, строка символов; |
<контекст> |
- число, которое назначено подсказке для данного окна. |
Коды задания командных кнопок и пиктограмм в функции MsgBox() приведены в табл. 19.7. Функция MsgBox() возвращает код (число), соответствующий нажатой кнопке.
Таблица 19.7. Список видов командных кнопок и их кодов
Код |
Константа |
Описание |
|
|
Коды командных кнопок |
0 |
vbOKOnly |
OK |
1 |
vbOKCancel |
OK, Отмена |
2 |
vbAbortRetryIgnore |
Прекратить, Повторить, Игнорировать |
3 |
vbYesNoCancel |
Да, Нет, Отмена |
4 |
vbYesNo |
Да, Нет |
5 |
vbRetryCancel |
Повторить, Отмена |
Пример 19.38. Формирование диалогового окна с кнопками
Текст программы |
Комментарий |
600
|
Option Explicit |
|
|
Обязательность объявления всех |
|
Sub Msg_Priim() |
|
переменных в модуле перед их |
|
|
|
|
|
использованием |
|
|
|
|
|
|
|
Объявление процедуры |
|
|
Dim Response As Integer |
Объявление переменной |
|
|
Dim Msg As String |
|
Строка сообщения |
|
|
Dim Title As String |
|
Кнопки |
для |
окна |
|
Dim Help As String |
|
(vbYesNoCancel |
+ |
+ |
|
Dim Style As Integer |
|
vbDefaultButtonH vbQuestion) |
|
|
Dim Ctxt As Integer |
|
Заголовок окна |
|
|
Msg |
= |
"Вы |
хотите |
Имя файла-подсказки |
|
|
продолжить ?" |
|
|
Номер контекста внутри файла- |
|
Style = 35 |
|
|
подсказки |
|
|
|
Title = "Пример окна- |
Присвоение |
переменной |
кода |
|
сообщения" |
|
|
ответа |
|
|
|
Help = "DEMO.HLP" |
|
Конец процедуры |
|
|
Ctxt = 0 |
|
|
|
|
|
|
Response = |
MsgBox(Msg; |
|
|
|
|
Style; Title; Help; Ctxt) |
|
|
|
|
|
End Sub |
|
|
|
|
|
В результате выполнения программы будет |
сформировано |
следующее окно (рис. 19.24). |
|
Рис. 19.24. Окно-сообщение с кнопками
Диалоговые окна для ввода данных
Функция InputBox() обеспечивает формирование окна для вывода строки сообщения и ожидания ввода строки символов или нажатия кнопки. Возвращает содержание текстового блока:
InputВох(<строка_сообщение> [,<заголовок_окна>][.<текст_по_умолчанию>] [,Хпоз][,Yпоз][, <файл-подсказки>, <контекст>])
где <текст_по_умолчанию> |
- строка символов, выводимая в текстовом блоке (может быть пустой); |
Хпоз, Yпоз |
- позиция левого верхнего угла окна. |
|
|
|
Пример 19.39. Формирование окна ввода |
|
|
|
|
|
|
|
|
|
Текст программы |
|
Комментарий |
|
|
|
Option Explicit |
|
Обязательность |
объявления |
|
|
Sub Msg_Inp() |
|
всех переменных в модуле перед |
|
|
|
|
их использованием |
|
|
|
|
|
Объявление процедуры |
|
|
Dim Response As String |
|
Объявление переменной |
|
|
Dim Message As String |
|
Строка-сообщение |
|
|
Dim Default As String |
|
Заголовок окна |
|
|
|
Dim Title As String |
|
Текст по умолчанию |
|
|
Dim Help As String |
|
Присвоение |
переменной |
|
|
Dim Style As Integer |
|
символьного типа |
результата |
|
|
Dim Ctxt As Integer |
|
ввода |
|
|
|
Message = "Введите |
Фамилию, |
|
|
Имя и Отчество студента" |
|
Конец процедуры |
Title = "Пример окна для ввода" |
|
|
Default = "Смирнов Игорь |
|
Александрович" |
Response |
= |
|
InputBox(Message; |
Title; Default; |
|
100; 100) |
|
|
|
End Sub |
|
|
|
|
|
|
|
В результате выполнения программы будет выведено диалоговое окно (рис. 19.25).
Рис. 19.25. Диалоговое окно для ввода данных
Диалоговые окна пользователей
Диалоговые окна пользователей обеспечивают ввод и редактирование данных файлов и таблиц. Для
создания диалогового окна выполняется команда ВСТАВКА, Макрос с указанием типа вставляемого листа – Диалог. Экран содержит основу для построения диалогового окна пользователя, а также панель инструментов Формы (рис. 19.26) для размещения и настройки (форматирования) элементов окна.
Рис. 19.26. Панель инструментов Формы
Таблица 19.8. Состав панели инструментов Формы
В диалоговом окне могут размещаться элементы произвольного вида, которые создают наборы
объектов. Доступ к конкретному элементу – по имени набора и имени или порядковому номеру элемента внутри набора.
Метки не могут редактироваться пользователем в процессе работы с диалоговым окном, но могут изменяться программным путем с помощью свойства Caption объекта Labels().