Функция MessageDlgPos в Delphi отображает сообщение и кнопки в заданной позиции экрана.
Dialogs unit
function MessageDlgPos (const Message : string; DialogType : TMsgDlgType; Buttons : TMsgDlgButtons; HelpContext : Longint; X, Y : Integer) : Integer;
Функция MessageDlgPos используется, чтобы отобразить сообщения пользователю в заданной экранной позиции. Эти сообщения могут быть информационными, предупреждения или другими. Даётся полный свободный выбор кнопок, которые пользователь может нажать, чтобы подтвердить диалог.
Например, пользователю можно показать сообщение об ошибках, и можно позволить прервать, повторить или отменить ошибочный процесс. Экранные координаты даются в значениях Y и X.
Значение 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.
Функция MessageDlgPos: Отображает диалог подтверждения
var
buttonSelected : Integer;
begin
// Показ подтверждающего диалога в 20,100
buttonSelected := MessageDlgPos('Confirmation',mtError, mbOKCancel, 0, 20, 100);
// Показ типа выбранной кнопки
if buttonSelected = mrOK then ShowMessage('Была нажата OK');
if buttonSelected = mrCancel then ShowMessage('Была нажата Cancel');
end;
Результат
Диалог подтверждения будет отображен с кнопками OK и Cancel в координатах 20 100.
Пользователь нажимает OK:
Была нажата OK
отобразится в другом диалоговом окне
Функция MessageDlgPos: Отображает заказной диалог с заказным выбором кнопки
var
buttonSelected : Integer;
begin
// Показ подтверждающего диалога в координатах 20,100
buttonSelected := MessageDlgPos('Custom dialog',mtCustom, [mbYes,mbAll,mbCancel], 0, 20, 100);
// Показ типа выбранной кнопки
if buttonSelected = mrYes then ShowMessage('Была нажата Yes');
if buttonSelected = mrAll then ShowMessage('Была нажата All');
if buttonSelected = mrCancel then ShowMessage('Была нажата Cancel');
end;
Результат
Диалог без значка будет отображен с кнопками OK, Cancel и All в координатах 20 100.
Пользователь нажимает кнопку All:
Была нажата All
отобразится в другом диалоговом окне
Похожие функции, процедуры и команды
InputBox — отображает диалог, который просит пользователя о вводе текста, со значением по умолчанию.
InputQuery — отображает диалог, который просит пользователя о вводе текста.
MessageDlg — отображает сообщение, знак и выбираемые кнопки.
ShowMessage — показывает простое диалоговое окно с кнопкой ОК, содержащее заданную строку.
ShowMessageFmt — отображает отформатированные данные в простом диалоговом окне с кнопкой ОК.
ShowMessagePos — показывает строку в простом диалоговом окне размещенном в заданном месте.
