Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.02.25;
Скачать: [xml.tar.bz2];

Вниз

Форма в dll   Найти похожие ветки 

 
BlankAlex   (2002-02-07 14:58) [1]

(* ГЛАВНОЕ *)

TfmNetMain = class(TForm)
procedure FormResize(Sender: TObject);
private
{ Private declarations }
Procedure WMMove(var M: TMessage);message WM_Move;
public
{ Public declarations }
end;


{При изменении размеров главной формы изменим размеры дочерней}
procedure TfmNetMain.FormResize(Sender: TObject);
Var
F:TForm ;
Rect:TRect ;
begin
F:=FindForm(TfmOpenProject) ;
If F <> nil Then With F Do Begin
Rect:=GetFormClientRect(Self) ;

If WindowState = wsMaximized Then Begin
Left:=Rect.Left+2;
Top:=Rect.Top+2;
Width:=Rect.Right-Left-2 ;
Height:=Rect.Bottom-Top-2 ;
End ;
End ;
end;

{При передвижении главной формы переместим менеджер проектов}
Procedure TfmNetMain.WMMove(var M: TMessage);
Var
F:TForm ;
Rect:TRect ;
begin
F:=FindForm(TfmOpenProject) ;
If F <> nil Then With F Do Begin
Rect:=GetFormClientRect(Self) ;

If WindowState = wsMaximized Then Begin
Left:=Rect.Left+2;
Top:=Rect.Top+2;
Width:=Rect.Right-Left-2 ;
Height:=Rect.Bottom-Top-2 ;
End ;
End ;
end;

(* ДОЧЕРНЕЕ*)

TfmOpenProject = class(TForm)
private
{ Private declarations }
Procedure WMMoving(var M: TMessage);message WM_Moving;
Procedure WMGetMinMaxInfo(var M: TWMGetMinMaxInfo); message WM_GetMinMaxInfo;
Procedure WMSysCommand(var Message:TMessage); message WM_SYSCOMMAND ;
public
{ Public declarations }
end;

{Если окно максимизировано, то мы не можем двигать его}
Procedure TfmOpenProject.WMMoving(var M: TMessage);
Var
Rect:TRect ;
Begin
If WindowState = wsMaximized Then Begin
Rect:=GetFormClientRect(fmNetMain) ;

PRect(M.LParam)^.Left:=Rect.Left +2 ;
PRect(M.LParam)^.Top:=Rect.Top +2 ;
PRect(M.LParam)^.Right:=Rect.Right-2 ;
PRect(M.LParam)^.Bottom:=Rect.Bottom -2 ;
End ;
End ;

{Установка координат раскрытия окна}
procedure TfmOpenProject.WMGetMinMaxInfo(var M: TWMGetMinMaxInfo);
Var
Rect:TRect ;
begin
Rect:=GetFormClientRect(fmNetMain) ;
M.MinMaxInfo.ptMaxPosition.x := Rect.Left +2 ;
M.MinMaxInfo.ptMaxPosition.y := Rect.Top +2 ;
M.MinMaxInfo.ptMaxTrackSize.x:= Rect.Right-Rect.Left-4 ;
M.MinMaxInfo.ptMaxTrackSize.y:= Rect.Bottom-Rect.Top-4 ;
End ;


{Определение размеров клиентской области}
Function GetFormClientRect(F:TForm):TRect ;
Begin
Windows.GetWindowRect(F.ClientHandle,Result) ;
End ;


Единственное, я обрабатывал все только для случая, когда псевдодочерняя форма максимизирована,
т.е. она в максимизированном состоянии не может выйти за пределы родительской и перемещается вместе с ней, тебе нужно еще обрабатывать, когда форма не максимизирована.
И еще, стиль псевдочайлд формы fsStayOnTop, правда я не пользуюсь стандартным, а использую APi-шные функции для этого.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.02.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.005 c
6-79413
Kettle of delphi
2001-12-08 17:35
2002.02.25
Помогите с индикатором процесса копирования!


1-79360
DJ X
2002-02-03 16:13
2002.02.25
---|Ветка была без названия|---


6-79414
Jaya1
2001-12-09 16:25
2002.02.25
---|Ветка была без названия|---


6-79406
amamed_3071
2001-12-06 11:37
2002.02.25
Refresh file list(NMFTP)


14-79462
Dmitry69
2002-01-10 02:25
2002.02.25
Помогите нужна прога FSDialer v3.1 Build 248





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский