Форум: "WinAPI";
Текущий архив: 2005.02.13;
Скачать: [xml.tar.bz2];
Вниз?? Параметризация TDialog офф ?? Найти похожие ветки
← →
You © (2004-12-26 04:40) [0]Вопрос вот какого характера:
как у появляющихся окон классов TOpenDialog и TSaveDialog устанавливать положение оных на экране, менять сам размер окон и регулировать их З-ордер??
я кашна подправил исходник ...програ~1\соурс\всл\диалогс.пас, но
может есть какой-нть более лаконичный способ...
заранее всем - ОГРОМНОЕ спасибо
← →
Leonid Troyanovsky © (2004-12-26 12:05) [1]
> You © (26.12.04 04:40)
> как у появляющихся окон классов TOpenDialog и TSaveDialog
> устанавливать положение оных на экране, менять сам размер
> окон и регулировать их З-ордер??
Вот уж не знаю насчет z-order, бо диалоги-то модальные,
но у TCommonDialog есть MessageHook, который можно
(аккуратно) попользовать.
Ну, или, старым дедовским способом:
{by Chris Willig}
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);
OpenDialog.Execute;
end;
--
С уважением, LVT.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2005.02.13;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.048 c