Функція 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 —показує рядок у простому діалоговому вікні розміщеному у заданому місці.
