![]() |
![]() ![]() ![]() ![]() |
|
Позиционирование диалога с сообщением над формой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 | ||||