Вниз
Скачать: CL | DM;

?? Параметризация 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 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.024 c
14-1106412939
thaddy
2005-01-22 19:55
2005.02.13
A bit off topic, but kol related!


6-1101921015
OneFragLeft
2004-12-01 20:10
2005.02.13
Как сделать BroadCast


3-1105716383
SergP.
2005-01-14 18:26
2005.02.13
Поддерживает ли SQL побитовые операции?


6-1099675291
tati
2004-11-05 20:21
2005.02.13
Xp, 98 и Server2003


11-1090955253
Владимир
2004-07-27 23:07
2005.02.13
Автозапуск программы




   Наверх