Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.02.13;
Скачать: 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 вся ветка

Текущий архив: 2005.02.13;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.05 c
4-1103896059
korvin
2004-12-24 16:47
2005.02.13
Помогите найти фокус


4-1104240928
BVV
2004-12-28 16:35
2005.02.13
WinExec


6-1101878414
BT
2004-12-01 08:20
2005.02.13
IdTCPClient


1-1107089778
ТехникПТО
2005-01-30 15:56
2005.02.13
Как удалить определенный файл??


1-1107221895
FreeAndNil
2005-02-01 04:38
2005.02.13
Зачем нужен Temp: TObject в функции FreeAndNil ?