Главная страница
    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
14-23773
SPeller
2002-06-06 10:29
2002.07.08
Компилятор Дельфей


1-23596
chak
2002-06-25 11:49
2002.07.08
Как устранить эту ошибку?


3-23477
Wassily
2002-06-16 10:19
2002.07.08
Как запретить вносить новые записи в таблицу через DBGrid ?


3-23519
Ш-К
2002-06-18 09:33
2002.07.08
Update


6-23712
Timon
2002-04-30 10:56
2002.07.08
Сокеты и Win2k





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