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

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.44 MB
Время: 0.004 c
1-43084
Voldemar
2002-02-27 02:45
2002.03.14
TImage обалдел или я?


4-43216
otari
2002-01-11 21:27
2002.03.14
помогите !!! двучвопросних человеку


1-43091
Demon ltd
2002-02-27 23:42
2002.03.14
Повторная помощь с созданием инстольника


1-43025
AlexMey
2002-02-26 12:38
2002.03.14
Фон кнопок в компоненте ToolBar?


1-43047
Dimedrol
2002-02-26 16:56
2002.03.14
Ctrl+M в TMemo





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский