Функция MessageDlg в Delphi отображает сообщение, знак и выбираемые кнопки.
Dialogs unit
function MessageDlg (const Message : string; DialogType : TMsgDlgType; Buttons : TMsgDlgButtons; HelpContext : Longint) : Integer;
Функция MessageDlg используется для отображения сообщений пользователю. Эти сообщения могут быть информационными, предупреждающими и другими. Даётся полный свободный выбор кнопок, которые пользователь может нажать, чтобы подтвердить диалог.
Например, пользователю можно показать сообщение об ошибках, и дан выбор прерывания, повтора или отмены ошибочного процесса.
Значение DialogType может иметь одно из следующих перечисленных значений:
- mtWarning - Отображает символ восклицания;
- mtError - Отображает красный "Х";
- mtInformation - Отображает "i" в круге;
- mtConfirmation - Отображает знак вопроса;
- mtCustom - Отображает только сообщение.
Значение Buttons может быть одним из следующих перечисленных значений:
- mbYes - Отображает кнопку "Yes";
- mbNo - Отображает кнопку "No";
- mbOK - Отображает кнопку "OK";
- mbCancel - Отображает кнопку "Cancel";
- mbAbort - Отображает кнопку "Abort";
- mbRetry - Отображает кнопку "Retry";
- mbIgnore - Отображает кнопку "Ignore";
- mbAll - Отображает кнопку "All";
- mbNoToAll - Отображает кнопку "No to all";
- mbYesToAll - Отображает кнопку "Yes to all";
- mbHelp - Отображает кнопку "Help".
Вы задаёте эти значения в квадратных скобках разделённых запятой, как во втором примере кода.
Delphi обеспечивает множество предопределенных комбинаций кнопок:
- mbYesNoCancel = [mbYes, mbNO, mbCancel]
- mbYesAllNoAllCancel = [mbYes, mbYesToAll, mbNo, mbNoToAll, mbCancel]
- mbOKCancel = [mbOK, mbCancel]
- mbAbortRetryCancel = [mbAbort, mbRetry, mbCancel]
- mbAbortIgnore = [mbAbort, mbIgnore]
Теперь, кажется, что в Delphi сделали конструкторскую недоработку при установке возвращаемого значения диалогового окна. Вместо того, чтобы определить перечисляемое значение нажатой кнопки, используется полностью различный набор перечисляемых имён:
- mrYes = 6
- mrNo = 7
- mrOK = 1
- mrCancel = 2
- mrAbort = 3
- mrRetry = 4
- mrIgnore = 5
- mrAll = 8
- mrNoToAll = 9
- mrYesToAll = 10
Значения получают числовые значения этих перечислений, данных в числовом порядке, которые определены как эквивалентные mb. Это очень странно.
Эти значения определены в модуле Controls, а не в модуле Dialogs.
Обратите внимание, что кнопка Help не имеет никакого эквивалентного возвращаемого значения. Это потому что она не заканчивает диалог.
Значение HelpContext используется вместе с кнопкой Help. Его использование выходит из области Основ Delphi.
Функция MessageDlg: Показ диалога с подтверждением
var
buttonSelected : Integer;
begin
// Отображение диалога с подтверждением
buttonSelected := MessageDlg('Confirmation',mtError, mbOKCancel, 0);
// Показ типа выбранной кнопки
if buttonSelected = mrOK then ShowMessage('Была нажата OK');
if buttonSelected = mrCancel then ShowMessage('Была нажата Cancel');
end;
Результат
Диалог подтверждения будет отображен с кнопками OK и Cancel.
Пользователь нажимает OK:
Была нажата OK (отобразится в другом диалоговом окне)
Функция MessageDlgPos: Отображает заказной диалог с заказным выбором кнопки
var
buttonSelected : Integer;
begin
// Отображение заказного диалога
buttonSelected := MessageDlg('Custom dialog',mtCustom,
[mbYes,mbAll,mbCancel], 0);
// Показ типа выбранной кнопки
if buttonSelected = mrYes then ShowMessage('Была нажата Yes');
if buttonSelected = mrAll then ShowMessage('Была нажата All');
if buttonSelected = mrCancel then ShowMessage('Была нажата Cancel');
end;
Результат
Диалог без значка будет отображен с кнопками OK, Cancel и All.
Пользователь нажимает кнопку All:
Была нажата All (отобразится в другом диалоговом окне)
Похожие функции, процедуры и команды
InputBox — отображает диалог, который просит пользователя о вводе текста, со значением по умолчанию.
InputQuery — отображает диалог, который просит пользователя о вводе текста.
MessageDlgPos — отображает сообщение и кнопки в заданной позиции экрана.
ShowMessage — показывает простое диалоговое окно с кнопкой ОК, содержащее заданную строку.
ShowMessageFmt — отображает отформатированные данные в простом диалоговом окне с кнопкой ОК.
ShowMessagePos — показывает строку в простом диалоговом окне размещенном в заданном месте.
