Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > MDIForm для не главной формы


Автор: Valart 8.4.2011, 15:16
Есть главная форма Form1 (FormStyle=fsNormal), дочерняя форма Form2 (FormStyle=fsMDIForm) и дочерняя форма Form3 (FormStyle=fsMDIChild).
Form1 и Form2 создаются автоматически.
При попытке вызвать Form3 происходит ошибка: Cannot create form. No MDI forms are currently active.
Как это можно побороть? Знаю, что это возможно, потому как находил в Инете упоминания об этом. На одном форуме человек описывал подобную проблему и он её решил, но (негодяй!!!) не написал как он это сделал!

Автор: Gwire 11.4.2011, 13:46
А кокого результата ты хочешь достичь?
Это избавляет от ошибки.
Код

procedure TForm2.FormCreate(Sender: TObject);
begin
    if Application.MainForm <> nil
      then Application.MainForm.Show;
    PPointer(@Application.MainForm)^:= Self;
end;

или в .dpr файле
Код

  Application.CreateForm(TForm2, Form2); // Создание формы Form2 выполнить первой
  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(TForm3, Form3);
  Form1.Show;

или
Код

  Form1:= TForm1.Create( Application ); // Создание формы Form1 выполнить "руками"
  Application.CreateForm(TForm2, Form2); 
  Form3:= TForm3.Create( nil );  


Насколько критично чтобы Form1 была главной формой?

Автор: RomanEEP 11.4.2011, 14:05
Открываем модуль Forms, смотрим процедуру TCustomForm.CreateWindowHandle, думаем...

Автор: Valart 12.4.2011, 10:05
Gwire, это была попытка таким вот несколько нестандартным способом решить вот эту задачу: http://forum.vingrad.ru/forum/topic-325917.html.
Т.е. я хотел засунуть в panel на главной форме окно типа MDIForm, а уже в нем создавать окна MDIChild.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)