FormStyle = fsMDIForm 主窗体上的框架

Frame on main form with FormStyle = fsMDIForm

有没有办法在具有 Align = alClient 框架的主窗体上显示 MDI 子窗体 (FormStyle = fsMDIChild)?
在主窗体上创建框架:

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

正在主窗体上创建 MDI 子窗体:

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

此后,子窗体不可见。如果您不创建框架,则表单是可见的。如果先显示子窗体,然后在主窗体上创建框架,那么子窗体又变得不可见了。

这里的问题是您的框架正在与 MDI 客户端 window 竞争 space。 MDI 客户端 window 是 window,它是 MDI 子 windows.

的父级

在您的方案中,框架占用了主 window 内所有剩余的客户区,因此没有 space 用于 MDI 客户端 window。

您的尝试是不可能的。 MDI 客户端 window 必须去某个地方,你必须给它留一些空间。

根据您的实际目标,可以使用不同的解决方案:

  • 如果要使框架始终可见,则使用 alTop。它下面剩余的 space 将可供 MDI 客户端使用 window。
  • 如果您希望在 MDI 客户端 window 上显示图像作为背景,请参考我的回答: