|  | 
|      | 
|   | 
| Позиционирование диалога с сообщением над формой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 прямо в свой смартфон. Подпишитесь на наш  :: Главная :: Диалоги и Фреймы :: 
 | ||||
|  ©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 | ||||