function DefMessageDlg(const ACaption: string;
const Msg: string;
DlgType: TMsgDlgType;
Buttons: TMsgDlgButtons;
DefButton: Integer;
HelpCtx: Longint): Integer;
var
i: Integer;
btn: TButton;
beginwith CreateMessageDialog(Msg, DlgType, Buttons) dotry
Caption := ACaption;
HelpContext := HelpCtx;
for i := 0 to ComponentCount - 1 dobeginif (Components[i] is TButton) thenbegin
btn := TButton(Components[i]);
btn.default := btn.ModalResult = DefButton;
if btn.defaultthen ActiveControl := btn;
end;
end;
Result := ShowModal;
finally
Free;
end;
end;
// Sets the focus on the "No"-Button // Setzt den Fokus auf den "Nein"-Button procedure TForm1.Button1Click(Sender: TObject);
beginif DefMessageDlg('Title',
'....?',
mtConfirmation,
mbYesNoCancel,
mrNo,
0) = mrYes then
ShowMessage('....');
end;
Переведенный текст:
Код - функция Delphi под именем DefMessageDlg, которая создает и отображает окно сообщения с указанным заголовком, сообщением, типом (подтверждение, ошибка и т.д.), кнопками, стандартной кнопкой и контекстом помощи. Стандартная кнопка устанавливается в соответствие с параметром DefButton.
Разбивка кода:
Создает новый объект TMessageDialog с помощью предоставленных параметров.
Устанавливает заголовок окна сообщения в значение, указанное в параметре ACaption.
Устанавливает контекст помощи для окна сообщения в значение, указанное в параметре HelpCtx.
Перебирает все компоненты на окне сообщения, проверяя каждый компонент на тип TButton.
Для каждого TButton, он проверяет, если модальный результат кнопки соответствует значению параметра DefButton. Если это так, он устанавливает свойство по умолчанию для кнопки в True. Это означает, что эта кнопка будет выделена как стандартный выбор.
Наконец, оно отображает окно сообщения модально с помощью метода ShowModal и возвращает результат (который является модальным результатом кнопки, нажатой пользователем).
Вторая часть кода - процедура под именем Button1Click, которая определяется. Эта процедура вызывается, когда контроль Button1 на форме кликнут.
Разбивка кода:
Он вызывает функцию DefMessageDlg с указанными параметрами для отображения диалогового окна подтверждения.
Если пользователь кликнул кнопку "Да" (которая была установлена как стандартная кнопка с помощью функции DefMessageDlg), процедура отображает сообщение с текстом '....'.
Чтобы установить кнопку как стандартную для диалогового окна, вы можете использовать параметр DefButton в функции DefMessageDlg. Например, если вы хотите установить кнопку "Нет" как стандартную, вы бы передали mrNo в качестве значения параметра DefButton.
В этом коде функция DefMessageDlg упрощается путем прямого вызова функции MessageDialog и установки свойства по умолчанию для каждой кнопки в цикле.
В статье описывается функция DefMessageDlg для создания диалогового окна с кнопками "Да", "Нет" и "Отменить" и выбором по умолчанию одной из этих кнопок.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.