Кадр в главной форме с FormStyle = fsMDIForm - PullRequest
0 голосов
/ 20 ноября 2018

Есть ли способ показать дочерние формы MDI (FormStyle = fsMDIChild) на главной форме, в которой есть рамка с Align = alClient?
Создание рамки на главной форме:

Frame := TfrCalendar.Create(Self);
Frame.Parent := Self;   

Создание дочерней формы MDI на главной форме:

if Assigned(FMDIRef)
then
  FMDIRef.BringToFront
else begin
  FMDIRef := TFReference.Create(Application);
  FMDIRef.Show;
end;

После этого дочерняя форма не отображается.Если вы не создадите рамку, форма будет видимой.Если сначала показать дочернюю форму, а затем создать рамку на главной форме, то дочерняя форма снова станет невидимой.

1 Ответ

0 голосов
/ 20 ноября 2018

Проблема в том, что ваш фрейм конкурирует за место с окном клиента MDI.Окно клиента MDI - это окно, которое является родительским для дочерних окон MDI.

В вашем сценарии фрейм занимает всю оставшуюся клиентскую область внутри главного окна, таким образом, не оставляя места для окна клиента MDI.

То, что вы пытаетесь сделать, невозможно.Окно MDI-клиента должно куда-то уходить, и вы должны оставить его в некотором пространстве.

В зависимости от того, какова ваша реальная цель, доступны различные решения:

  • Если предназначен фреймчтобы быть видимым всегда, используйте alTop.Оставшееся пространство под ним будет доступно окну клиента MDI.
  • Если вы хотите показать изображение в окне клиента MDI в качестве фона, см. Мой ответ здесь: https://stackoverflow.com/a/15137740/505088
...