使用FormStyle = fsMDIForm在主窗体上框架

时间:2018-11-20 07:08:32

标签: delphi frame mdi delphi-10.2-tokyo

是否可以在带有FormStyle = fsMDIChild框架的主表单上显示MDI子表单(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 :(得分:5)

这里的问题是您的框架正在与MDI客户端窗口争夺空间。 MDI客户端窗口是MDI子窗口的父窗口。

在您的方案中,框架占用了主窗口内所有剩余的客户区域,因此没有空间用于MDI客户窗口。

无法尝试。 MDI客户端窗口必须移至某个位置,并且必须将其留出一些空间。

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

  • 如果要使该框始终可见,请使用alTop。 MDI客户端窗口将使用它下面的剩余空间。
  • 如果您希望在MDI客户端窗口上显示图像作为背景,请在此处参考我的回答:https://stackoverflow.com/a/15137740/505088