Описание |
Функция 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.
|
|
Похожие команды |
InputBox Отображает диалог, который просит пользователя о вводе текста, со значением по умолчанию
InputQuery Отображает диалог, который просит пользователя о вводе текста
MessageDlg Отображает сообщение, знак и выбираемые кнопки
ShowMessage Показывает простое диалоговое окно с кнопкой ОК, содержащее заданную строку
ShowMessageFmt
ShowMessagePos Показывает строку в простом диалоговом окне размещенном в заданном месте
| |
|
Пример кода : Отображает диалог подтверждения |
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
отобразится в другом диалоговом окне
|
|
| Пример кода : Отображает заказной диалог с заказным выбором кнопки |
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
отобразится в другом диалоговом окне
|
|