Использование диалоговых окон Visual Basic 2010

Материал из УссуриВики
Перейти к: навигация, поиск
Автор: Лера Рябова

Диалоговые окна

В Visual Basic 2010 существует специальный вид окон — диалоговые окна. В распоряжении разработчика имеется хорошо развитый инструментарий для их создания. Диалоговые окна бывают двух типов — модальные и немодальные.

Модальное диалоговое окно — это окно, из которого нельзя перейти в другое окно, не закрыв текущее. Данный вид диалоговых окон используется для выдачи сообщений о ходе работы приложения, его настройки или ввода каких-либо данных, необходимых для работы. Примером такого диалогового окна в программе Visual Basic является окно About. Модальное диалоговое окно вынуждает пользователя совершать некоторые действия или отвечать на запрос приложения вводом информации или выполнением какого-либо действия.

Немодальное диалоговое окно — это окно, позволяющее перемещать фокус на другое окно или форму без закрытия текущего окна. Данный тип диалоговых окон используется редко. Примером немодального диалогового окна в Visual Basic является окно Find (Поиск), дающее возможность осуществлять поиск нужной информации. Простейшие из диалоговых окон — это окна сообщений и окна, предназначенные для ввода информации. В дополнение к ним в Visual Basic 2010 существует набор более сложных стандартных диалоговых окон для приложений:

● Open (Открыть) — диалоговое окно для поиска в файловой структуре нужного файла;

● Save As (Сохранить как) — для поиска места хранения файла и ввода его имени;

● Font (Шрифт) — для выбора и установки шрифта;

● Color (Цвет) — для выбора цветовой палитры;

● Print (Печать) — для настройки режима печати;

● Help (Справка) — для работы со справочной системой приложения. Рассмотрим эти диалоговые окна более подробно.


Окно сообщения (Message Box)

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

● текст сообщения;

● заголовок;

● пиктограмма;

● набор кнопок.

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

Окно сообщения вызывается из программы методом MessageBox.Show, который имеет следующий синтаксис:

 Function Show(ByVal owner As Iwin32Window, ByVal text As String,
 ByVal caption As String, ByVal buttons As MessageBoxButtons,
 ByVal icon As MessageBoxIcon,
 ByVal defaultButton As MessageBoxDefaultButton,
 ByVal options As MessageBoxOptions) As DialogResult

где:

● owner — элемент управления, к которому будет относиться окно сообщения;

● text — отображаемый в диалоговом окне текст сообщения. В этот текст можно вставить в качестве разделителей строк возврат каретки, перевод строки или их комбинацию с помощью констант vbCr, vbLf и vbCrLf соответственно;

● caption — текст заголовка окна сообщения;

● buttons — кнопки, отображаемые в окне сообщения. Может принимать одно из значений перечисления MessageBoxButtons;


Таблица 1 – Размещаемые в окне сообщений кнопки (MessageBoxButtons)

Отображение кнопки Значение Набор кнопок в диалоговом окне
Ok OK Ok.JPG
OkCancel OK и Cancel (Отмена) Ok.JPGCancel.JPG
AbortRetryIgnore Abort (Стоп), Retry (Повтор) и Ignore (Пропустить) Abort.JPGRetry.JPGIgnore.JPG
YesNoCancel Yes (Да), No (Нет) и Cancel (Отмена) Yes.JPG No.JPG Cancel.JPG
YesNo Yes (Да) и No (Нет) Yes.JPGNo.JPG
RetryCancel Retry (Повтор) и Cancel (Отмена) Retry.JPG Cancel.JPG

● icon — отображаемый рядом с текстом значок. Может принимать одно из значений перечисления MessageBoxIcon;


Таблица 2 – Размещаемые в окне сообщений значки (MessageBoxIcon)

Значок Значение Тип сообщения
Exclamation, Warning Предупреждает об ошибке, которая может вызвать затруднения при работе приложения Warning.JPG
Question Запрашивает дополнительную информацию Question.JPG
Asterisk, Information Информирует о состоянии программы Information.JPG
Error, Hand, Stop Сообщает о серьезной ошибке при выполнении приложения Stop.JPG

● defaultButton — выбираемая по умолчанию кнопка, т. е. кнопка, на которую устанавливается фокус. Может принимать одно из значений перечисления MessageBoxDefaultButton: Button1 (Первая кнопка), Button2 (Вторая кнопка) и Button3 (Третья кнопка);

● options — параметры диалогового окна. Может принимать одно из значений перечисления MessageBoxOptions.


Таблица 3 – Параметры окна сообщений

Описание Значение
DefaultDesktopOnly Окно сообщений располагается на активном рабочем столе
RightAlign Текст и заголовок окна сообщений выравнивается по правому краю
RtlReading Элементы окна сообщений располагаются в порядке чтения справа налево
ServiceNotification Окно сообщений располагается на текущем активном рабочем столе даже в том случае, если ни один пользователь не зарегистрирован в системе

В методе MessageBox.Show можно использовать не все параметры. Любое число параметров справа и параметр owner можно убрать, оставив хотя бы параметр text. Например, метод может содержать лишь параметры text и caption, тогда окно сообщений не будет содержать значка и будет отображаться одна кнопка OK.

Метод MessageBox.Show возвращает в зависимости от нажатой кнопки окна сообщений одно из значений перечисления DialogResult. Это необходимо для анализа нажатой кнопки и выполнения соответствующих действий в программе. Перечисление DialogResult имеет значения Abort, Cancel, Ignore, No, OK, Retry, Yes, соответствующие кнопкам окна сообщений, и значение None, когда окно сообщений находится в процессе выполнения.


Рассмотрим небольшой пример, который позволит создавать различные окна сообщений. Для этого выполните следующие действия:

1. Создайте новое Windows-приложение с именем MessageBoxExample.

2. Откройте окно свойств и задайте с помощью свойств Text и Name формы заголовок формы Окна сообщений и имя формы frmMsgBoxes.

3. Перетащите на форму два элемента управления Button. Задайте для каждого элемента следующие значения свойств Text и Name: Приветствие и bWelc, Выход и bExit.

4. Для открытия при нажатии кнопки Приветствие простого окна сообщения, состоящего из заголовка, текста сообщения и кнопки OK, добавьте в код программы процедуру обработки события нажатия кнопки bWelc со следующей строкой:

 MessageBox.Show("Приветствуем Вас!", "Окно сообщений") 

5. Для создания окна сообщения, позволяющего завершить приложение, добавьте в код программы процедуру обработки события нажатия кнопки bExit со следующим кодом:

 Dim result As DialogResult 
 result = MessageBox.Show( "Вы действительно хотите закрыть приложение?",
 "Закрытие приложения", MessageBoxButtons.YesNo,  MessageBoxIcon.Asterisk) 
 If result = DialogResult.Yes Then 
 Application.Exit() 
 End If


Диалоговое окно ввода информации (InputBox)

Стандартное диалоговое окно InputBox используется для ввода небольших фрагментов текста. Окно InputBox состоит из четырех элементов:

● строка заголовка;

● приглашение к вводу;

● поле ввода со значением, предлагаемым по умолчанию;

● две кнопки (ОК и Cancel).

Функция InputBox имеет следующий синтаксис:

 InputBox (prompt [, title] [, default] [, xpos] [, ypos] [, helpfile, context])

где:

● prompt — текст сообщения в диалоговом окне. Максимальная длина текста 1024 символа. В этот текст можно вставить в качестве разделителей строк перевод каретки Chr(13), перевод строки Chr(lO) или их комбинацию;

● title — текст заголовка диалогового окна;

● default — значение текстового поля ввода по умолчанию. Если параметр отсутствует, строка остается пустой;

● xpos — позиция по горизонтали левого верхнего угла диалогового окна относительно левого верхнего угла экрана. По умолчанию присваивается значение, соответствующее середине экрана;

● ypos — позиция по вертикали левого верхнего угла диалогового окна относительно левого верхнего угла экрана. По умолчанию присваивается значение, соответствующее середине экрана;

● helpfile — ссылка на файл справочной системы;

● context — ссылка на содержание в файле справочной системы.

Для примера введите в командном окне среды проектирования Immediate следующую команду:

 strUserTest = InputBox ("Введите пароль", "Запуск приложения", "****")
Рисунок 1 - Диалоговое окно ввода
В результате получите диалоговое окно, показанное на рисунке 1.

В отличие от диалогового окна MsgBox, в окне InputBox всегда имеются только две кнопки управления: ОК и Cancel. Кнопка ОК подтверждает ввод данных, кнопка Cancel — закрывает диалоговое окно без ввода данных.

Приведем пример использования окон сообщений.

В результате действия приведенной ниже процедуры появится окно ввода с полем ввода (рисунок 2).
Рисунок 2 - Диалоговое окно Пример окна ввода

Следуя приглашению в этом диалоговом окне, введем в поле ввода имя, например Андрей. Нажмем кнопку ок.

На экране отобразится диалоговое окно пример окна сообщения с текстом приветствия (рисунок 3).
Рисунок 3 - Диалоговое окно

Если пользователь не введет имя в поле ввода диалогового окна пример окна ввода или нажмет кнопку Отмена, то компьютер выразит свое неудовлетворение действиями пользователя отображением диалогового окна.

 Private Sub ТестОкон()
 ' Описание переменной
 Dim ИмяКлиента As String
 ' Ввод имени пользователя
 ИмяКлиента = InputBox("Введите ваше имя", "Пример окна ввода")









Использование CommonDialog для создания диалоговых окон

Все диалоговые окна, перечисленные в начале раздела "Диалоговые окна", можно создать с помощью элемента управления commonDialog. Прежде чем его использовать, необходимо подключить к проекту библиотеку Microsoft Common Dialog Control 6.0 через диалоговое окно Components (Компоненты) среды проектирования. Для вызова диалоговых окон необходимо использовать соответствующие каждому из этих окон методы элемента управления commonDialog, указанные в таблице 4.


Таблица 4 – Методы элемента управления CommonDialoq

Метод Описание
ShowOpen Вызывает диалоговое окно, используемое для открытия файла
ShowSave Вызывает диалоговое окно, используемое для сохранения файла
ShowColor Вызывает диалоговое окно настройки цветовой палитры
ShowFont Вызывает диалоговое окно настройки шрифтов текста
ShowPrinter Вызывает диалоговое окно настройки печати и диалоговое окно печати
ShowHelp Подключает справочную систему в стиле Windows


Диалоговое окно открытия файла

Диалоговое окно открытия файла предназначено для поиска файлов, используемых в программе. Имя выбранного файла или списка файлов возвращается в свойстве FileName объекта CommonDialog. Для вызова диалогового окна открытия файла необходимо в событии click кнопки cbControl приложения MySmallProject ввести следующий код:

 Private Sub cbControl_Click()
 cdlMyDialog.ShowOpen
 End Sub

Для ввода кода достаточно дважды щелкнуть на объекте cbcontroi левой кнопкой мыши. При этом открывается редактор кода с шаблоном кода для события click этой кнопки. Значения для свойства cdlMyDialog. Flags указаны в таблице 5.


Таблица 5 – Значения для метода Flags диалогового окна открытия файла

Константа Значение Описание
cdlOFNAllowMultiselect &H200 Устанавливает возможность множественного выбора файлов в диалоговом окне. Возвращаемые имена файлов находятся в свойстве FileName элемента управления CornmonDialog и разделены пробелами
cdlOFNCreatePrompt &H2000 Устанавливает для диалогового окна запрос на подтверждение создания нового файла, если он не существует
cdlOFNExplorer &H80000 Назначает диалоговому окну стиль проводника
cdlOFNHelpButton &H10 Указывает на необходимость размещения в диалоговом окне кнопки Справка
cdlOFNHideReadOnly &H4 Файлы только для чтения не отображаются
cdlOFNLongNames &H200000 Разрешает использование длинных имен файлов
cdlOFNNoChangeDir &H8 Назначает папку, открываемую по умолчанию при запуске диалогового окна
cdlOFNNoLongNames &H40000 Запрещает использование длинных имен файлов
cdlOFNNoReadOniyReturn &H8000 Указывает, что выводимые в диалоговом окне файлы не должны быть предназначены только для чтения и не находятся в каталоге, защищенном от записи (Write-protected)
cdlOFNNoValidate &H100 Сообщает о вводе недопустимых символов в имени файла
cdlOFNOverwritePrompt &H2 Устанавливает для диалогового окна запрос на подтверждение перезаписи существующего файла
cdlOFNPathMustExist &H800 Устанавливает требование указания полного пути к файлу


Диалоговое окно сохранения файла

Для поиска файла, в котором будут сохранены данные из программы, используется диалоговое окно сохранения файла (рисунок 4). Это диалоговое окно вызывается так же, как окно открытия файла. Для его создания в событии click кнопки cbControl приложения MySmallProject необходимо заменить код на следующий:
Рисунок 4 - Диалоговое окно сохранения файла, созданное с помощью объекта CommonDialog
 Private Sub cbControl_Click()
 cdlMyDialog.ShowSave
 End Sub

Как видно из рисунка, это диалоговое окно аналогично окну, предназначенному для открытия файла.




Диалоговое окно настройки цветовой палитры

Для настройки цвета фона формы и расположенных в форме элементов можно использовать диалоговое окно настройки цветовой палитры. Для вызова этого диалогового окна необходимо заменить код в событии click кнопки cbcontrol приложения MySmallProject на следующий:

 Private Sub cbControl_Click()
 cdlMyDialog.ShowColor
 End Sub

Константы, используемые для настройки диалогового окна выбора цветовой палитры, перечислены в таблице 6. Расширенное диалоговое окно настройки цветовой палитры можно создать с помощью объекта CommonDialog.


Таблица 6 – Значения для метода Flags диалогового окна цветовой палитры

Константа Значение Описание
cdlCCFullOpen &H2 Помещает в диалоговое окно дополнительную кнопку Добавить в набор и цветовое поле с маркером и линейкой назначения оттенка для добавления цветов в поля Дополнительные цвета диалогового окна цветовой палитры
cdlCCShowHelp &H8 Добавляет в диалоговое окно кнопку Справка
cdlCCPreventFullOpen &H4 Скрывает кнопку Добавить в набор
cdlCCRGBInit &H1 Восстанавливает в диалоговом окне исходный набор цветов


Диалоговое окно настройки шрифтов текста

Для вызова диалогового окна настройки шрифтов необходимо в событие click кнопки cbcontrol ввести следующий код:

 Private Sub cbControl_Click()
 cdlMyDialog.Flags = cdlCFBoth + cdlCFEffects
 cdlMyDialog.ShowFont
 End Sub

Флаги диалогового окна настройки шрифтов перечислены в таблице 7.


Таблица 7 – Значения для метода Flags диалогового окна настройки шрифтов

Константа Значение Описание
cdlCFANSIOnly &H400 Назначает выбор только из системных наборов шрифтов Windows
cdlCFApply &H200 Добавляет в диалоговое окно кнопку Применить
cdlCFBoth &H3 Назначает использование экранных шрифтов принтера, указанного в свойстве hDC
CdlCFEffects &H100 Указывает на необходимость размещения в диалоговом окне элементов управления, задающих эффект подчеркивания, зачеркивания и цвета
cdlCFForceFontExis it &H10000 Назначает вывод предупреждения об ошибке при выборе несуществующего шрифта
cdlCFHelpButton &H4 Добавляет в диалоговое окно кнопку Справка
cdlCFLimitSize &H4 Скрывает кнопку Добавить в набор
cdlCCRGBInit &H2000 Назначает выбор размеров шрифтов в интервале, указанном в свойствах Min и Мах
cdlCFNoFaceSel &H80000 Отключает выбор наименования шрифта
cdlCFNoSizeSel &H1000 Отключает выбор размера шрифта
cdlCFNoSimulations &H200000 Отключает в диалоговом окне графические шрифты
cdlCFNoStyleSel &H100000 Отключает выбор стиля шрифта
cdlCFNoVectorFonts &H800 Отключает выбор векторных шрифтов
cdlCFPrinterFonts &H2 Назначает выбор только шрифтов принтера, который указан в свойстве hDC
cdlCFScreenFonts &H1 Назначает выбор только экранных шрифтов системы
cdlCFTTOnly &H40000 Назначает только выбор шрифтов типа True Type


Диалоговое окно печати

Диалоговое окно печати можно вызвать с помощью элемента управления commonDialog, заменив код в событии click кнопки с наименованием cbControl на следующий:

 Private Sub cbControl_Click()
 cdlMyDialog.ShowPrinter
 End Sub

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

 Private Sub cbControl_Click()
 cdlMyDialog.Flags = cdlPDPrintSetup
 cdlMyDialog.ShowPrinter
 End Sub

Запустив приложение MySmallProject, вы получите диалоговое окно, показанное на рисунке 5.

Рисунок 5 – Диалоговое окно печати, открытое с использованием объекта CommonDialog

Допустимые флаги диалоговых окон печати и настройки печати перечислены в таблице 8.


Таблица 8 – Значения для метода Flags диалогового окна печати

Константа Значение Описание
cdlPDAllPages &НО Возвращает или устанавливает состояние переключателя печати всех страниц
cdlPDDisablePrintToFile &H800000 Делает недоступным флажок диалогового окна Печать в файл
cdlPDHelpButton &H800 Добавляет в диалоговое окно кнопку Справка
cdlPDHidePrintToFile &H100000 Скрывает флажок диалогового окна Печать в файл
cdlPDNoPageNums &H8 Скрывает элементы управления в группе Печатать
cdlPDNoWarning &H80 Отменяет предупреждение об отсутствии принтера по умолчанию
cdlPDPageNums &H2 Делает недоступными элементы управления, расположенные в области Печатать
cdlPDPrintSetup &H40 Выводит диалоговое окно настройки печати перед диалогом печати
cdlPDPrintToFile &H20 Возвращает или устанавливает состояние флажка Печать в файл
cdlPDReturnDefault &H400 Возвращает имя принтера, используемое по умолчанию

Справочная система в стиле Windows

Флаги диалогового окна справочной системы перечислены в таблице 9. Для использования этого диалогового окна необходимо создать справочную систему для приложения (файл справки).


Таблица 9 – Значения для метода Flags диалогового окна справочной системы

Константа Значение Описание
cdlHelpCommandHelp &Н102 Вызывает справочную систему отдельной командой
cdlHeIpContents &НЗ Вызывает содержание справочной системы
cdlHelpContext &H1 Вызывает отдельную тему справочной системы
cdlHelpContextPopup &H8 Вызывает тему справки по индексу
cdlHelpIndex &H3 Вызывает указатель справочной системы
cdlHelpKey &H101 Вызывает справочную систему по ключевому слову


Список литературы

1. Иллюстрированный самоучитель по Visual Basic 6.0

2. Язык программирования Visual Basic. Использование стандартных диалоговых окон ввода и вывода информации.

3. Скачать самоучитель Visual Basic 2010 / А. Н. Дукин, А. А. Пожидаев