Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-23540
HellTRooper
2002-06-26 16:36
2002.07.08
RxRichedit


14-23742
Malder
2002-06-03 17:35
2002.07.08
Сайты со всякими странностями


6-23696
Новенький в Делфи
2002-04-19 16:38
2002.07.08
Null Remote Address (NMSMTP)


4-23841
whc
2002-05-10 13:33
2002.07.08
Мышь над StringGrid-ом


3-23482
nick_sniper
2002-06-12 23:23
2002.07.08
Работа с Access через Delphi





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