Создайте MDIForm под обычной формой и откройте дочерний MDI под ошибкой MDIForm - PullRequest
1 голос
/ 13 января 2012

Это моя первая тема

В том же приложении:

У меня есть NormalForm (Mainform), которая в MDIForm вызова Popupmenu выглядит следующим образом:

MDIForm:=TMDIForm.Create(nil);
MDIForm.Show;

Формы открываются правильно ... Теперь в MDI-форме я пытаюсь создать MDIChild с:

  fm := TMDIChild.Create(Self);
  fm.FormStyle:=fsMDIChild;
  fm.Show;

Получить ошибку: Не удается создать форму. Формы MDI в настоящее время не активны

Кто-нибудь знает, как это сделать?!

Ответы [ 2 ]

4 голосов
/ 13 января 2012

Вы не можете смешивать стили формы таким образом. Дочерняя форма MDI ожидает, что основной формой приложения будет форма MDI. Код VCL не проверяет, доступны ли любые формы MDI при создании дочернего элемента.

1 голос
/ 14 января 2012

VCL изначально не поддерживает то, что вы пытаетесь.Для этого требуется, чтобы MainForm приложения было установлено на FormStyle=fsMDIForm, и только просматривает MainForm.Ваша MainForm не настроена таким образом.

Это ограничение VCL, а не ограничение Windows.Можно обойти это и использовать дочерние формы MDI в других формах, не относящихся к MainForm, но это требует некоторого взлома исходного кода VCL.См. этот пример и этот отчет о контроле качества .

...