904     __ ______________________________________Глава 14

Необходимые кнопки заносятся в Buttons операцией ««», поскольку пара-
метр Buttons является множеством. Если не занести в этот параметр ничего, в
окне не будет ни одной кнопки и пользователю придется закрывать окно систем-
ными кнопками Windows.

Кроме множества значений, соответствующих отдельным кнопкам, определе-
ны три константы, соответствующие множествам часто используемых сочетаний
кнопок:

Множество	Описание
mbYesNoCancel	Включает в окно кнопки Yes, No и Cancel
mbOkCancel	Включает в окно кнопки ОК и Cancel
mbAbortRetryIgnore	Включает в окно кнопки Abort, Retry и Ignore

Эти предопределенные множества имеют тип TMsgDIgButtons и могут непо-
средственно включаться в вызов функции вместо параметра Buttons.

Параметр HelpCtx определяет экран контекстной справки, соответствующий
данному диалоговому окну. Этот экран справки будет появляться при нажатии по-
льзователем клавиши F1. Если вы справку не планируете, при вызове MessageDIg
надо задать нулевое значение параметра HelpCtx.

Функция MessageDIg возвращает значение, соответствующее выбранной по-
льзователем кнопке. Возможные возвращаемые значения:

mrNone    mrAbort    mrYes
mrOk      mrRetry    mrNo
mrCancel mrlgnore   mrAll

Приведем примеры использования функции MessageDIg. Первый пример ил-
люстрирует диалог при окончании работы приложения:

if(MessageDIg("Действительно хотите закончить приложение?",

mtConfirmation, TMsgDIgButtons() « mbYes« mbNo, 0) == mrYes)

{

MessageDIg("Работа приложение закончена", mtlnformation,
TMsgDIgButtons() « mbOK, 0);

Closed;

}

Первый вызов MessageDIg приводит к отображению окна типа mtConfirmati-
on с вопросом о завершении приложения. Если пользователь нажимает кнопку
Yes, то выводится второе окно типа mtlnformation с сообщением о завершении.

Второй пример иллюстрирует диалог при возникновении исключения:

catch (...)
{

MessageDIg("Произошла ошибка.", mtError, TMsgDIgButtons() « mbOK, 0) ;

MessageDIg("Будьте внимательнее.", mtWarning,
TMsgDIgButtons() « mbOK, 0);

)

Третий пример иллюстрирует работу с базой данных, когда после редактиро-
вания пользователем записи ему предлагается вопрос о сохранении ее в базе дан-
ных. Если пользователь выбирает кнопку Yes, запись сохраняется методом Post;

если пользователь выбирает кнопку No, результаты редактирования уничтожают-
ся методом Cancel; если же пользователь выбирает кнопку Cancel, диалог закрыва-
ется. В этом примере набор кнопок в окне задается множеством mbYesNoCancel.

switch (MessageDIg("Занести запись в БД?", mtCustom, mbYesNoCancel, 0))