Как центрировать по форме модальный диалог
Как центрировать по форме модальный диалог
Как центрировать по форме модальный диалог procedure CenterDialogPos(DlgHandle, WindowHandle: HWND); var DlgRect : TRect; WndRect : TRect; x, y, w, h : integer; begin if (DlgHandle <> 0) then begin GetWindowRect(DlgHandle, DlgRect); GetWindowRect(WindowHandle, WndRect); w := DlgRect.Right - DlgRect.Left; h := DlgRect.Bottom - DlgRect.Top; //center horz x := WndRect.Left + ((WndRect.Right - WndRect.Left - w) div 2); //keep on screen if x < 0 then x := 0 else if x + w > Screen.Width then x := Screen.Width - w; //center vert y := WndRect.Top + ((WndRect.Bottom - WndRect.Top - h) div 2); //keep on screen if y < 0 then y := 0 else if y + h > Screen.Height then y := Screen.Height - h; SetWindowPos(DlgHandle, 0, x, y, 0, 0, SWP_NOACTIVATE or SWP_NOSIZE or SWP_NOZORDER); end; end; procedure TForm1.WMUser1(var msg: TMessage); // message WM_USER+1; begin CenterDialogPos(GetActiveWindow, Handle); end; procedure TForm1.Button1Click(Sender: TObject); begin PostMessage(Handle, WM_USER+1, 0, 0); ShowMessage('Test'); end;