Главная страница
    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
3-23438
Vitaliy74
2002-06-11 14:28
2002.07.08
курсор в сохр. процедурах


1-23598
KIR
2002-06-25 10:15
2002.07.08
Запись в файл


3-23475
Eraser
2002-06-08 00:15
2002.07.08
Как изменить формат данных в TDBEdit


4-23836
Hel
2002-05-07 13:14
2002.07.08
Функция CreateProcess


3-23481
Sniffer
2002-06-16 12:16
2002.07.08
Как узнать, существует ли Таблица?





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