Позиционирование диалога с сообщением над формойDelphi , Программа и Интерфейс , Диалоги и ФреймыПозиционирование диалога с сообщением над формой
Оформил: DeeCo const mbMessage = WM_USER + 1024; type private procedure ChangeMessageBoxPosition(var Msg: TMessage); message mbMessage; end; var Form1: TForm1; msgCaption: PChar; // variable to hold the caption implementation {$R *.DFM} procedure TForm1.ChangeMessageBoxPosition(var Msg: TMessage); var MbHwnd: longword; MbRect: TRect; x, y, w, h: integer; begin MbHwnd := FindWindow(MAKEINTRESOURCE(WC_DIALOG), msgCaption); if (MbHwnd <> 0) then begin GetWindowRect(MBHWnd, MBRect); with MbRect do begin w := Right - Left; h := Bottom - Top; end; // center horzontal x := Form1.Left + ((Form1.Width - w) div 2); // keep on screen if x < 0 then x := 0 else if x + w > Screen.Width then x := Screen.Width - w; //center vertical y := Form1.Top + ((Form1.Height - h) div 2); // keep on screen if y < 0 then y := 0 else if y + h > Screen.Height then y := Screen.Height - h; // set new windows position SetWindowPos(MBHWnd, 0, x, y, 0, 0, SWP_NOACTIVATE or SWP_NOSIZE or SWP_NOZORDER); end; end; procedure TForm1.Button1Click(Sender: TObject); begin PostMessage(Handle, WM_USER + 1024, 0, 0); msgCaption := 'Confirm'; MessageBox(Handle, 'Has our MessageBox moved ?', msgCaption, MB_ICONQUESTION or MB_YESNO); end; Это пример программирования на Delphi, демонстрирующий, как позиционировать диалоговое окно (месседж-бокс) над формой. Вот разбивка кода: Константы и типы Первый раздел определяет константы и типы:
Определение типа
Приватный процедура
Переменные Следующий раздел определяет переменные:
Implementation Раздел реализации содержит код, который реализует процедуры:
Описание
В коде происходит следующее:
1. Процедура В процедуре В целом, этот код демонстрирует, как позиционировать диалоговое окно над формой и перераспределять его, когда это нужно. В статье описывается способ позиционирования диалога с сообщением над формой в приложении на языке Delphi, используя SendMessage для изменения положения формы. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Диалоги и Фреймы ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |