10.
ИСПОЛЬЗОВАНИЕ
ДИАЛОГОВ
10.1. Окно
сообщения MsgBox
Окно сообщения представляет собой простую экранную форму, которая отображает некоторое сообщение и имеет хотя бы одну командную кнопку. Иногда оно содержит пиктограмму и имеет несколько кнопок, позволяющее пользователю выбрать некоторое из предлагаемых действий (см. рис. 4). Окно сообщения можно использовать для отображения информации или получения сведений о принятом пользователем решении.
Рис. 4. окно сообщения MsgBox
Окно сообщения является модальным по отношению к приложению. Это означает, что приложение не сможет продолжить работу, пока окно не будет закрыто.
Отобразить окно сообщения можно, без предварительного описания его в проекте, с помощью оператора или функции «MsgBox». Принципиальная их разница состоит в том, что функция отображает окно и возвращает выбранное пользователем действие (определяет нажатую кнопку), а оператор только отображает его. Синтаксис оператора и функции следующий:
MsgBox Message, [Options], [Title], [HelpFile], [HelpContext]
RetInt = MsgBox(Message,
[Options], [Title], [HelpFile], [HelpContext])
· RetInt – переменная целого типа, которой присваивается возвращаемое функцией значение.
·
MsgBox
– имя
оператора/функции.
· Message – строковое выражение, которое будет отображаться в окне сообщения.
· Options – целая константа (или несколько констант), определяющая, какие кнопки и пиктограммы будут отображаться в окне сообщения (необязательный параметр).
· Title – строковое выражение, которое будет отображаться в строке заголовка окна сообщения (необязательный параметр).
· HelpFile – строка, указывающая путь к справочному файлу, в котором находится дополнительная информация, относящаяся к данной теме (необязательный параметр).
· HelpContext – число, ассоциированное с некоторой темой в справочном файле, указанном в параметре «HelpFile» (необязательный параметр).
В Visual Basic есть много предопределенных (внутренних) констант, которые можно использовать при программировании окон сообщения, указывая их в параметре «Options». При этом можно указывать несколько таких констант, соединяя их в одно значение знаком «+».
В окно сообщения можно поместить одну из четырех пиктограмм, обычно связанных с характером сообщения (см. табл. 17).
Таблица 17
Пиктограммы, используемые в окнах сообщений
и соответствующие им константы
Пиктограмма |
Константа |
Назначение |
|
vbCritical |
Критическое сообщение. Указывает, что произошла серьезная ошибка. Часто после такого сообщения программа прекращает работу |
|
vbExclamation |
Предупреждение. Сообщает об ошибке, которая требует исправления или может привести к нежелательным последствиям |
|
vbQuestion |
Вопрос. Указывает, что для продолжения работы программе требуется дополнительная информация от пользователя |
|
vbInformation |
Информационное сообщение. Информирует пользователя о состоянии программы. Чаще всего используется для сообщения о завершении выполнения некоторой задачи |
Оператор можно использовать для вывода сообщений. Однако, если вы захотите получить информацию о том, какое решение принял пользователь, придется воспользоваться функцией и проверить возвращаемое ею значение.
В функции «MsgBox» имеется шесть наборов кнопок, каждому из них соответствует своя уникальная константа, помещаемой в аргументе «Options» (см. табл. 18).
Таблица 18
Возможные наборы кнопок функции «MsgBox»
и соответствующие им константы
Набор кнопок |
Значение |
Константа |
Ok |
0 |
vbOkOnly |
Ok, Отмена |
1 |
vbOkCancel |
Прервать, Повтор, Пропустить |
2 |
vbAbortRetryIgnore |
Да, Нет, Отмена |
3 |
vbYesNoCancel |
Да, Нет |
4 |
vbYesNo |
Повтор, Отмена |
5 |
vbRetryCancel |
Если в окне сообщения используется несколько кнопок, нужно указать, какая из них должна применяться по умолчанию. Кнопка, используемая по умолчанию, получает фокус при отображении окна и срабатывает, если нажать <Enter>. Чтобы указать такую кнопку, нужно в аргументе «Options» добавить еще одну константу (см. табл. 19).
Таблица 19
Указание кнопки, используемой по умолчанию
Кнопка по умолчанию |
Значение |
Константа |
Первая |
0 |
vbDefaultButton1 |
Вторая |
256 |
vbDefaultButton2 |
Третья |
512 |
vbDefaultButton3 |
Четвертая |
768 |
vbDefaultButton4 |
Пользователь может выбрать одну из семи кнопок (в зависимости от их набора). При выборе каждой из них функция возвращает соответствующее ей значение. Узнать о том, какая кнопка была нажата, можно сравнив значение переменной, в которую было возвращено значение (RetInt), с соответствующей константой (см. табл. 20).
Таблица 20
Значения возвращаемые функцией «MsgBox»
Кнопка |
Значение |
Константа |
Ok |
1 |
vbOk |
Отмена |
2 |
vbCancel |
Прервать |
3 |
vbAbort |
Повтор |
4 |
vbRetry |
Пропустить |
5 |
vbIgnore |
Да |
6 |
vbYes |
Нет |
7 |
vbNo |
Примечание |
Из всех параметров оператора и функции обязательным является текст сообщения (Message). При указании только его одного окно сообщения будет содержать это сообщение и только одну кнопку «Ok» при пустом заголовке. |
Диалоговое окно «MsgBox» позволяет достаточно гибко и полно строить очень сложные диалоги. Однако они ограничиваются возможностью выбора только каких-либо конкретных действий.
10.2.
Использование
элемента
управления «CommonDialog»
С помощью элемента управления «CommonDialog» можно получить доступ к четырем диалоговым окнам Windows.
Достоинство использования этих диалогов заключается в простоте их программирования и в том, что они хорошо известны всем пользователям Windows.
Чтобы получить доступ к этому элементу управления, необходимо его сначала подключить к среде разработки Visual Basic. Для этого нужно пометить пункт «Microsoft Common Dialog Control 6.0» в диалоговом окне «Component». После этого добавляют в проект его иконку как обычный элемент управления. После этого им можно пользоваться.
Примечание |
Все диалоговые окна открываются только в модальном режиме относительно приложения. |
10.2.1.
Диалоговое
окно «File»
Чаще всего элемент управления «CommonDialog» используют для выбора файлов. В этом случае его можно использовать в одном из двух режимов: открытие (FileOpen) или сохранение (FileSave) файлов. Разница этих двух режимов заключается только в надписях на диалоговом окне и кнопках, а принцип работы остается неизменным. На рис. 5 представлено типовое окно диалога «File».
Рис. 5. Пример диалогового окна «File»
Для открытия диалогового окна «File» используется метод ShowOpen или ShowSave для соответствующих режимов:
CommonDialog1.ShowOpen или
CommonDialog1.ShowSave
· CommonDialog1 – имя элемента управления «CommonDialog».
· ShowOpen/ShowSave – имена соответствующих методов.
Если возникает необходимость в отображении только конкретных файлов по определенной маске, то нужно предварительно установить свойство «Flag»:
CommonDialog1.Filter =
“Description|Filtercond”
· CommonDialog1 – имя элемента управления «CommonDialog».
·
Filter
– имя
свойства.
· Description – текстовое описание типа файлов, которые будут отображаться в окне.
· Filtercond – шаблон для отбора файлов, записывается в соответствии со стандартными принципами.
· | – специальный символ, разделяющий параметры «Description» и «Filtercond».
В этом свойстве можно устанавливать несколько пар значений «Description» и «Filtercond», каждая из них должна отделяться друг от друга символом «|».
Примечание |
Не ставьте пробелы перед символом «|» или после него – вы не получите желаемого результата. |
Чтобы получить имя выбранного файла, необходимо воспользоваться свойством «FileName»:
MyFileName$ =
CommonDialog1.FileName
· MyFileName$ – имя символьной переменной, в которой будет храниться полное имя файла с учетом его местоположения;
· FileName – имя свойства, хранящего имя выбранного файла.
Примечание |
Элемент управления «CommonDialog» не открывает выбранный файл, а просто получает полное его имя, которое используется в операторе «Open» при его открытии. |
При работе с элементом управления «CommonDialog» необходимо помнить следующее: при щелчке на кнопке «Отмена» диалогового окна «Файл» свойство «FileName» будет хранить имя файла, выбранного при предыдущем вызове диалога. Чтобы определить, что была нажата клавиша «Отмена», нужно установить свойство «CancelError» элемента управления «CommonDialog» в состояние «True». В этом случае при щелчке на этой кнопке будет генерироваться ошибка, которую следует обработать соответствующими процедурами обработки ошибок. Это свойство распространяется на все диалоговые окна без исключений.
10.2.2. Диалоговое окно «Font»
Диалоговое окно «Шрифт» позволяет управлять шрифтами надписей любых элементов управления и текстовых окон (см. рис. 6).
Настройка диалога начинается с установки специального свойства «Flags». Оно сообщает элементу управления о том, какие наборы шрифтов вы хотите использовать:
CommonDialog1.Flags =
Value
· Flags – имя свойства;
· CommonDialog1 – имя элемента управления «CommonDialog»;
· Value – некоторое значение или константа, определяющая набор шрифтов. В табл. 21 представлены возможные варианты значений этого свойства.
Рис. 6. Диалоговое окно «Font»
Таблица 21
Возможные значения свойства «Flags»
Шрифты |
Константа |
Значение |
Экранные шрифты |
cdlCFScreenFonts |
1 |
Шрифты принтера |
cdlCFPrinterFonts |
2 |
Оба набора шрифтов |
cdlCFBoth |
3 |
Если значение «Flags» не установить, программа выдаст сообщение о том, что ни один шрифт не установлен.
Для отображения диалогового окна «Font» нужно воспользоваться методом «ShowFont» со следующим синтаксисом:
CommonDialog1.ShowFont
· ShowFont – имя метода.
Информация о выбранном шрифте и его установках хранится в свойствах этого элемента управления. В табл. 22 приведены эти свойства.
Таблица 22
Свойства, в которых хранятся атрибуты шрифтов
Свойство |
Атрибут |
Свойство |
Атрибут |
FontName |
Имя базового шрифта |
FontItalic |
Выбор курсива |
FontSize |
Размер шрифта в пунктах |
FontUnderLine |
Подчеркивание |
FontBold |
Полужирное начертание |
FontStrikeThru |
Перечеркивание |
Следующий фрагмент кода демонстрирует, как получить информацию о шрифте и использовать ее для текстового поля «Text1»:
CommonDialog1.ShowFont
On Error Resume Next
Text1.FontName =
ControlName.FontName
Text1.FontSize =
ControlName.FontSize
Text1.FontBold =
ControlName.FontBold
Text1.FontItalic =
ControlName.FontItalic
Text1.FontUnderLine =
ControlName.FontUnderLine
Text1.FontStrikeThru =
ControlName.FontStrikeThru
Примечание |
Важно помнить, что если какой-нибудь атрибут не был выбран (оставлен по умолчанию), то его использование в приведенном выше коде вызовет ошибку, поэтому его использование предусматривает дополнительную установку игнорирования возникшей ошибки. |
10.2.3. Диалоговое окно «Color»
Цвета в Visual Basic программируются двумя способами.
Первый способ связан с использованием 16-ти специальных, заранее предопределенных цветов, соответствующие цветам в языке программирования Microsoft QuickBasic. Генерируются они при помощи специальной функции QBColor:
NameControl.BackColor = QBColor(Color)
· NameControl – имя элемента управления, цвет которого изменяется.
· BackColor – свойство, отвечающее за выбор цвета объекта.
·
QBColor
– имя
функции.
·
Color
– аргумент,
определяющий
цвет (0…15).
Второй способ является более предпочтительным и гибким, поскольку поддерживает полную цветовую гамму Windows. Цвет, в данном случае рассматривается, как комплекс трех составляющих любого цвета: красного, зеленого и синего. Интенсивность каждого из них в результирующем цвете определяется специальными единицами от 0 до 255. Цвет генерируется специальной функцией «RGB»:
NameControl.BackColor = RGB(Red, Green, Blue)
·
RGB
– имя
функции.
· Red, Green, Blue – параметры, соответствующие интенсивности каждой цветовой составляющей, соответственно красному, зеленому и синему.
Диалоговое окно «Цвет» элемента управления «CommonDialog» позволяет пользователю создать необходимый цвет, согласно второму способу, для использования его в формах и элементах управления и др. (см. рис. 7).
Рис. 7. Диалоговое окна «Color»
Полученный цвет находится в специальном свойстве элемента управления «CommonDialog»:
CommonDialog1.ShowColor
NameControl.BackColor =
CommonDialog1.Color
· CommonDialog1 – имя элемента управления «CommonDialog».
· ShowColor – метод, открывающий диалоговое окно «Color».
· Color – имя свойства, хранящего выбранный цвет.
Контрольные
вопросы для
самопроверки