unit kns;
{$R-}interfaceuses Forms, Dialogs;
{ Центрирование информационного диалога }function MessageDlgCtr(const Msg: string; DlgType: TMsgDlgType;
Buttons: TMsgDlgButtons; HelpCtx: Longint): Integer;
implementationuses Consts;
{ Функция MessageDlg располагает диалог над центром активного окна }function MessageDlgCtr(const Msg: string; DlgType: TMsgDlgType;
Buttons: TMsgDlgButtons; HelpCtx: Longint): Integer;
beginwith CreateMessageDialog(Msg, DlgType, Buttons) dotry
HelpContext := HelpCtx;
Left := Screen.ActiveForm.Left + (Screen.ActiveForm.Width div 2) -
(Width div 2);
Top := Screen.ActiveForm.Top + (Screen.ActiveForm.Height div 2) -
(Height div 2);
Result := ShowModal;
finally
Free;
end;
end;
end.
Это код на языке программирования Delphi, который создает пользовательскую реализацию функции MessageDlg, отображающей диалоговое окно с указанным сообщением, типом диалога, кнопками и контекстом помощи. Основное отличие этого кода от стандартной функции MessageDlg заключается в том, что этот код центрирует диалоговое окно над активным формой.
Разбивка кода:
Первая секция объявляет имя модуля (kns) и указывает ресурсному компилятору не включать отладочную информацию ({$R-}).
Интерфейсная секция объявляет использование (uses), которое включает в себя модули Forms и Dialogs.
Функциональная декларация определяет MessageDlgCtr, пользовательскую реализацию функции MessageDlg.
Секция реализации начинается с использованием (uses) модуля Consts.
Функция MessageDlgCtr создает новое диалоговое окно, используя конструктор CreateMessageDialog, передавая в него сообщение, тип диалога и кнопки.
Затем функция устанавливает контекст помощи с помощью свойства HelpContext.
Для центрирования диалогового окна над активной формой функция рассчитывает координаты левого верхнего угла диалогового окна на основе позиции и размера активной формы:
Она вычитывает половину ширины диалогового окна из координаты левого края активной формы, чтобы центрировать его горизонтально.
Она вычитает половину высоты диалогового окна из координаты верхнего края активной формы, чтобы центрировать ее вертикально.
Функция затем отображает модальное диалоговое окно с помощью ShowModal и возвращает результат.
Блок finally используется для освобождения выделенной памяти для диалогового окна, когда она больше не нужна.
Эта пользовательская реализация MessageDlg может быть полезной в ситуациях, где вам нужно иметь более контроля над позиционированием диалогового окна.
Данная статья описывает функцию MessageDlgCtr, которая центрирует информационный диалог над активным окном на экране.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.