16.13.4. function MessageDLG
function MessageDlg(Msg: string; DlgType: TMsgDlgType;
Buttons: TMsgDlgButtons; HelpCtx: Longint): Integer;
Данная функция отображает на экране стандартное диалоговое окно и возвращает код кнопки, нажатой пользователем в диалоговом окне. Применение данной функции позволяет создавать интерактивные скрипты.
Параметры:
Msg - текст сообщения или вопроса, выводимого в диалоговом окне
DlgType - тип диалогового окна. Для задания типа диалогового окна предусмотрен набор констант:
-
mtWarning - предупреждение
-
mtError - ошибка
-
mtInformation - информация
-
mtConfirmation - запрос подтверждения
С технической точки зрения тип диалогового окна определяет заголовок окна и отображаемую в окне иконку.
Buttons - код, определяющий, какой набор кнопок необходимо отобразить в диалоговом окне. Для задания набора кнопок предусмотрен набор констант:
-
mbOk - "ОК"
-
mbCancel - "Отмена"
-
mbYes - "Да"
-
mbNo - "Нет"
-
mbAbort - "Прервать",
-
mbRetry - "Повторить",
-
mbIgnore - "Игнорировать"Если требуется отобразить несколько кнопок, то код набора кнопок получается суммированием констант (например, mbYes+mbNo).
HelpCtx - код раздела справочной системы, в пользовательских скриптах должен быть равен нулю
Функция возвращает код нажатой кнопки:
-
mbOk - код 1
-
mbCancel - код 2
-
mbYes - код 6
-
mbNo - код 7
-
mbAbort - код 3,
-
mbRetry - код 4
-
mbIgnore - код 5
Важные замечания по работе функции:
1. Если в параметр Buttons фигурирует mbCancel, то появляется поддержка закрытия диалогового окна путем нажатия клавиши ESC на клавиатуре
2. Независимо от того, включена ли кнопка типа mbCancel в состав отображаемых через параметр Buttons, при закрытии диалогового окна путем нажатия "крестика" в заголовке окна, или путем закрытия диалогового окна по Alt+F4 формируется код возврата 2 (mbCancel).
Примеры:
var
Res : integer;
begin
Res := MessageDLG('Выполнить операцию ?', mtConfirmation, mbYes+mbNo, 0);
AddToLog('Код результата = ' + Inttostr(Res));
end.
Пример анализа возвращаемого функцией кода:
var
FileName : string;
begin
FileName := 'c:\trojan.exe';
if MessageDLG('Удалить файл "'+FileName+'" ?', mtConfirmation, mbYes+mbNo, 0) = 6 then
DeleteFile(FileName);
end.