Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.03.14;
Скачать: CL | DM;

Вниз

Form2.Parent:= Form1   Найти похожие ветки 

 
A.L.   (2002-02-15 10:35) [6]

Юрий Зотов
В проекте открывается несколько форм:

Application.CreateForm(TfmMain, fmMain); //Главная форма
Application.CreateForm(TfmTab, fmTab1);
fmTab1.Parent:= fmMain;
...
Application.CreateForm(TfmTab, fmTabN);
fmTabN.Parent:= fmMain;


у форм fmTab1..fmTabN:
FormStyle:= fsMDIForm;

В этих окнах пытаюсь создавать MDIChild окна,

fmChild:= TTTabChildForm.Create(Application, fmTabForm);

наследники класса:

unit uChForm;

interface

uses
Windows, Classes, Controls, Forms, Messages, Consts;

type
TTabChildForm = class(TForm)
private
{ Private declarations }
FParentForm: TForm;
protected
FClientHandle: HWND;
procedure CreateWindowHandle(const Params: TCreateParams); override;
procedure DestroyWindowHandle; override;
public
{ Public declarations }
constructor Create(AOwner: TComponent; AParent: TForm); reintroduce; overload;
end;

implementation

procedure TTabChildForm.CreateWindowHandle(const Params: TCreateParams);
var
CreateStruct: TMDICreateStruct;
begin
if (FormStyle = fsMDIChild) and not (csDesigning in ComponentState) then
begin
if (FParentForm = nil) or (FParentForm.ClientHandle = 0) then
raise EInvalidOperation.Create(SNoMDIForm);
with CreateStruct do
begin
szClass:= Params.WinClassName;
szTitle:= Params.Caption;
hOwner:= HInstance;
X:= Params.X;
Y:= Params.Y;
cX:= Params.Width;
cY:= Params.Height;
style:= Params.Style;
lParam:= Longint(Params.Param);
end;
WindowHandle:= SendMessage(FParentForm.ClientHandle,
WM_MDICREATE, 0, Longint(@CreateStruct));
Include(FFormState, fsCreatedMDIChild);
end else
begin
inherited CreateWindowHandle(Params);
Exclude(FFormState, fsCreatedMDIChild);
end;
end;

procedure TTabChildForm.DestroyWindowHandle;
begin
if fsCreatedMDIChild in FFormState then
SendMessage(FParentForm.ClientHandle, WM_MDIDESTROY, Handle, 0)
else
inherited DestroyWindowHandle;
FClientHandle:= 0;
end;

constructor TTabChildForm.Create(AOwner: TComponent; AParent: TForm);
begin
FParentForm:= AParent;
inherited Create(AOwner);
end;

end.

создаваться то они создаются, но, например, при максимизации дочернего окна и еще где не поподя лезет "Access violation"



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

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

Наверх




Память: 0.46 MB
Время: 0.013 c
7-43200
olkononov1
2001-12-11 17:06
2002.03.14
Размер шрифта зависит от ОС


3-42912
Yuri Btr
2002-02-13 11:31
2002.03.14
Обновление DBGrida после удаления записи


1-43022
nick_vstu
2002-03-01 02:40
2002.03.14
Что делает TSomeType.Create?


3-42981
Dim
2002-02-15 07:44
2002.03.14
Что происходит с InterBase ом?


6-43119
daos
2001-12-26 15:50
2002.03.14
Как принять сообщение через сокет? до меня не доходит...