AVZ 5. Руководство пользователя
×

16.12.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.