
- •9.Окно сообщений
- •Окно сообщений Функция MsgBox
- •Синтаксис функции MsgBox
- •Отображение пиктограммы
- •Отображение кнопок
- •Помещение кнопки в фокус
- •Определение модальности окна сообщения
- •Коды кнопок, возвращаемые функцией MsgBox
- •Размещение сообщения в нескольких строках
- •Пример использования функции MsgBox
- •Пример использования процедуры MsgBox
- •Окно ввода
- •Оператор перехода goto и метки
Размещение сообщения в нескольких строках
Если текст сообщения достаточно длинный, то оно будет автоматически разбито на несколько строк. Если это разбиение вас не устраивает, то вы можете выполнить разбиение сами с помощью константы vbCrLf, которая включает символы конца строки и перевода каретки в начало следующей. Для суммирования строк рекомендуется использовать знак ” & ” вместо знака ” + ”,
Dim sMessage As String ‘текст сообщения
sMessage = ”Вы действительно хотите” & vbCrLf & ”завершить работу ?”
Пример использования функции MsgBox
Приведённый ниже код выводит на экран запрос о подтверждении завершения работы приложения.
Dim sMessage As String ‘ текст сообщения
Dim sTitle As String ‘ заголовок окна
Dim nBattons As Integer ‘ параметр, определяющий набор кнопок и вид пиктограммы
Dim nResult As Integer ‘ код клавиши, нажатой пользователем
sMessage = ”Вы действительно хотите завершить работу ?”
sTitle = ”Завершение работы” ‘ определение заголовка окна сообщения
nBattons = vbYesNo + vbInformation ‘ определение стиля окна сообщения с кнопками “Да” и “Нет”
‘ и пиктограммой с символом “i”
nResult = MsgBox ( sMessage , nBattons , sTitle ) ‘ отображает на экране окно сообщений
‘ и передаёт переменной nResult код нажатой пользователем кнопки
IF nResult = vbYes Then ‘ если пользователь нажал кнопку “Да”
End ‘ завершение программы
End If
Пример использования процедуры MsgBox
Если окно сообщения содержит одну кнопку и анализировать код нажатой кнопки не нужно, то удобно использовать процедуру MsgBox, которая имеет тот же синтаксис, что и функция, но не использует скобки, в которые помещают её параметры.
Приведённый ниже код выводит на экран сообщение о назначении программы.
Dim sMessage As String ‘текст сообщения
Dim sTitle As String ‘заголовок окна
Dim nBattons As Integer ‘параметр, определяющий набор кнопок и вид пиктограммы
sMessage = "Программа вычисляет корни квадратного уравнения.” & vbCrLf & _
“Введите значения коэффициентов a, b, с ” & vbCrLf & _
”и нажмите кнопку ‘’Вычислить’’."
sTitle = ”О программе” ‘определение заголовка окна сообщения
nBattons = vbOKOnly + vbInformation ‘отображение кнопки ОК и пиктограммы Информация
MsgBox sMessage , nBattons , sTitle ‘вызов процедуры MsgBox
Окно ввода
Если для работы программы нужно ввести некоторую информацию, то для этого можно использовать специальное средство – окно ввода. В окне ввода отображается сообщение, предлагающее пользователю ввести что-либо, текстовое поле, в котором он может набрать нужный текст и две кнопки (ОК и Отмена). При нажатии кнопки ОК возвращает значение, находящееся в текстовом поле окна ввода. При нажатии кнопки Отмена функция InputBox возвращает пустую строку. С точки зрения программирования, работа с окнами ввода и окнами сообщений очень похожа.
Функция возвращает строку, введённую пользователем. Длина возвращаемой строки не более 255 символов. Синтаксис функции InputBox имеет вид:
InputBox ( promt , [ title ] , [Default] , [ XPos ] , [YPos] , [helpfile] , [contex]) As String
promt – обязательный параметр; строковое выражение, содержащее текст сообщения. Максимальная длина строки – 1024 символа;
title – необязательный параметр; строковое выражение, отображаемое в заголовке окна. Максимальная длина строки – около 60 символов, зависит от размера шрифта используемого в заголовках окон;
Default – необязательный параметр; строковое выражение, отображаемое в поле ввода;
XPos, YPos – необязательные параметры; начальное положение окна.
Прежде чем использовать в программе введённое пользователем значение, его нужно проверить. Для определения размера текстовой строки используется функция Len. Проверка типа данных обычно выполняется с помощью функции Val.