- Стандартные диалоговые объекты
- Диалоговое окно для ввода текста
- Функция MsgBox в системе Visual Basic
- Вывод сообщений в системах BCB и Delphi
- Универсальные и специализированные диалоги
- Выбор файла в режиме диалога
- Выбор файла для сохранения данных
- Диалог по поводу выбора шрифта
- Диалог по выбору цвета
- Диалоги по установкам и настройкам принтера
- Диалоговые окна для поиска и замены текста
- Выбор графических файлов
Вывод сообщений в системах BCB и Delphi
Опубликовано admin в Сб, 02/20/2010 - 00:21
В системах BCB и Delphi существует довольно большое количество диалоговых окон, предназначенных для вывода сообщений и анализа реакции пользователя — ShowMessage, MessageBox, MessageDlg, MessageDlgPos. Однако их функциональные возможности мало чем отличаются от окна MsgBox в системе Visual Basic.
Процедура ShowMessage отображает заданное сообщение в диалоговом окне с единственной кнопкой <OK>. Заголовок диалогового окна совпадает с именем приложения.
Функция MessageBox обладает несколько более широкими возможностями, т.к. располагает тремя аргументами:
int k=MessageBox(Message, Caption, Buttons);
Первый ее аргумент представляет указатель на текст отображаемого сообщения. Оно может быть достаточно длинным и автоматически разбивается на строки, помещающиеся в окне. Второй параметр задает строку, которая выступает в качестве заголовка диалогового окна. Комбинация кнопок в диалоговом окне задается числовым аргументом Buttons. Для их задания предусмотрен набор мнемонических констант, приведенных в табл. 6.2.
Таблица 6.2
| Константы Delphi | Константы BCB | Набор кнопок |
| mbAbortRetryIgnore | MB_ABORTRETRYIGNORE | Кнопки <Abort>, <Retry> и <Ignore> |
| mbOK | MB_OK | Одна кнопка <OK> |
| mbOKCancel | MB_OKCANCEL | Кнопки <OK> и <Cancel> |
| mbRertryCancel | MB_RETRYCANCEL | Кнопки <Retry> и <Cancel> |
| mbYesNo | MB_YESNO | Кнопки <Yes> и <No> |
| mbYesNoCancel | MB_YESNOCANCEL | Кнопки <Yes>, <No> и <Cancel> |
Функция MessageBox возвращает целочисленное значение из интервала [0,7] в зависимости от нажатой кнопки (табл. 6.3).
Таблица 6.3
| Число | Константа BCB | Константа Delphi | Нажатая кнопка |
| 1 | IDOK | mrOK | <OK> |
| 2 | IDCANCEL | mrCancel | <Cancel> |
| 3 | IDABORT | mrAbort | <Abort> |
| 4 | IDRETRY | mrRetry | <Retry> |
| 5 | IDIGNORE | mrIgnore | <Ignore> |
| 6 | IDYES | mrYes | <Yes> |
| 7 | IDNO | mrNo | <No> |
Нулевой результат свидетельствует о неудачной попытке создать диалоговое окно, например, по причине исчерпания ресурсов памяти.
Функция MessageDlg обладает большей гибкостью и несколько более широкими возможностями:
MessageDlg(Msg, DlgType, Buttons, HelpCtx);
Первый аргумент — значение типа AnsiString в BCB или типа String в Delphi, — представляет текст отображаемого сообщения. Второй аргумент определяет тип пиктограммы, включаемой в диалоговое окно, и обычно задается с помощью одной из следующих мнемонических констант:
- mtWarning — в диалоговом окне появляется восклицательный знак на фоне желтого треугольника, в заголовке окна слово Warning (Предупреждение);
- mtError — в диалоговом окне появляется стоп-знак (косой крест) в красном кружочке, в заголовке окна слово Error (Ошибка);
- mtInformation — в диалоговом окне появляется буква i на синем фоне, а в заголовке окна слово Information (Информация);
- mtConfirmation — в диалоговом окне появляется вопросительный знак на зеленом фоне, а в заголовке окна слово Confirmation (Подтверждение);
- mtCustom — диалоговое окно не содержит пиктограммы, заголовок окна совпадает с именем приложения.
Приложение 6_07 (Delphi).
Аргумент Buttons представлен множеством, элементы которого определяют набор кнопок, присутствующих в диалоговом окне. Для языка Object Pascal множество (set) является каноническим типом данных, и для задания его значения достаточно перечень допустимых элементов просто заключить в квадратные скобки (рис. 6.7)

Рис.6.7. Формат обращения к функции MessageDlg в Delphi
Приложение 6_08 (BCB).
Однако для программистов, использующих язык Си, данные типа множество являются новинкой, и способ задания соответствующих значений выглядит не совсем обычно (рис. 6.8).

Рис.6.8. Пример формирования множества в BCB
Последний аргумент HelpCtx определяет номер кадра помощи в Help-файле, который должен появиться при нажатии клавиши <F1>.
Вообще говоря, в системах BCB и Delphi существует несколько вариантов функции MessageDlg, отличающиеся набором параметров. Такая возможность в объектно-ориентированных системах составляет существо термина полиморфизм, и ей пользуются довольно часто. Однако чтобы не вносить сумятицу в головы начинающих программистов, мы рекомендуем использовать еще одну диалоговую функцию MessageDlgPos, которая в дополнение к четырем аргументам предыдущей функции требует задания координат (x,y), задающих в пикселах положение окна на экране.
Обе функции возвращают целочисленное значение — числовой код, приписанный нажатой кнопке (см. табл. 6.3).
