Форум: "Основная";
Текущий архив: 2002.07.08;
Скачать: [xml.tar.bz2];
ВнизСоздание MDIChild Найти похожие ветки
← →
Dmk (2002-06-24 02:28) [0]Можно ли, уже из созданного потомка TForm (к примеру TInfoForm), сделать MDIChild форму? И чтобы потомок не вылезал за границы MDI формы. Я делал так,
Application.CreateForm(TMainForm, MainForm);
InfoForm := TInfoForm.CreateNew(MainForm);
ReadComponentResFile("InfoPanel.dfm", InfoForm);
но InfoForm ведет себя как самостоятельное окно. Перекривает при Maximize и т.д.
← →
Юрий Зотов (2002-06-24 09:18) [1]1. InfoForm := TInfoForm( ReadComponentResFile("InfoPanel.dfm", InfoForm));
2. А зачем такие ухищрения? Разве недостаточно просто создать и выставить FormStyle = fsMDIChild?
← →
Dmk (2002-06-24 22:29) [2]Извини Юрий! Уж лет 5 в Delphi, а с формами никогда не работал. :) Просто смешно. :)
← →
Набережных С. (2002-06-25 09:03) [3]
> Юрий Зотов © (24.06.02 09:18)
> 1. InfoForm := TInfoForm(ReadComponentResFile("InfoPanel.dfm",
> InfoForm));
А зачем? Ведь в ReadRootComponent написано: Result := Root. Или я что-то упускаю из виду?
← →
andrey_m (2002-06-25 10:51) [4]Например можно так:
В модуле для TInfoForm
В { Private declarations } процедуру создания формы
FMDChild:Boolean;
В { Protected } описываем создания параметров для формы
procedure CreateParams(var Params: TCreateParams);override;
В { Public declarations } конструктор
constructor Create(AOwner: TComponent;FBool:Boolean);overload;
Глобально описываешь
procedure MyFormCreate(Sender: TObject;FMDChild:Boolean);
Далее в implementation
constructor TInfoForm.Create(AOwner: TComponent;FBool:Boolean);
begin
FMDChild:=FBool;
inherited Create(AOwner);
end;
procedure TInfoForm.CreateParams(var Params: TCreateParams);
begin
if FMDChild then
begin
FormStyle:= fsMDIChild;
Visible:= True;
end
else
Visible:= True;
inherited;
end;
procedure MyFormCreate(Sender: TObject;FMDChild:Boolean);
begin
// Создание формы
If not Assigned(InfoForm) then
InfoForm:=TInfoForm.Create(nil,FMDChild)
else
begin
InfoForm.BringToFront;
Exit;
end;//else if
end;
В модуле для TMainForm просто вызови процедуру
MyFormCreate(Sender,False); где второй параметр и есть признак того, будет ли форма Child или Normal.
Обязательно нужно чтобы MainForm была как MDIForm.
Вот и все. Удачи.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.07.08;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.006 c