【问题标题】:How to set MDI child form border to none?如何将 MDI 子窗体边框设置为无?
【发布时间】:2016-06-01 14:59:02
【问题描述】:

在我的 MDI 表单(父表单)上,每当我触发创建新 MDI 子表单的命令时,我都会执行这些操作(但它不起作用):

procedure TfrmMDI.CreateChildForm(const childName: string);
var Child: TfrmChild;
begin
    Child := TfrmChild.Create(Application);
    Child.Caption := childName;
    Child.BorderStyle := bsNone;
end;

我尝试通过对象检查器将MDI子窗体Border Style设置为bsNone,但效果不佳。

我终于尝试通过运行时设置MDI Child的 Form BorderStyle,但是它似乎也不起作用。

procedure TfrmChild.FormCreate(Sender: TObject);
begin
    BorderStyle := bsNone;
end;

有关更多信息,我当前的 MDI 子表单如下所示:

我们可能希望像这样设置 MDI Child's BS MDI Parent's BS

【问题讨论】:

    标签: forms delphi vcl delphi-xe8


    【解决方案1】:

    在等待一些答案后,我阅读了 Embarcadero 的一份文档,其中指出:

    "将 MDI 子窗体的边框样式更改为 bsDialogbsNone 没有无效"

    我尝试将我的程序的 应用程序外观 更改为 Embarcadero 创建的一些预安装样式,它有所帮助。

    我只是覆盖了我项目的默认样式设置。

    最后,它看起来像这样。如果您覆盖默认表单样式,任何边框样式更改都将应用于您的 MDI 子表单:

    【讨论】:

    • 您的解决方法有问题。它今天可能工作,但如果样式引擎被修复为正确处理 MDI 会怎样。我不明白为什么当您破坏了拥有可以打开、移动、调整大小和关闭的文档窗口的主要思想时,您甚至还要使用 MDI。那么,为什么您一开始就使用 MDI? 你想用它实现什么
    • 我承认我之前并不了解 TFrames。你说得对,谢谢。
    【解决方案2】:

    您尝试做的不是 MDI 的使用方式。使用客户端对齐的TFrame 对象而不是 MDI 子表单可能会更好地提供您想要的 GUI。

    【讨论】:

    • 非常感谢,你让我的一天变得轻松。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-09
    • 2020-05-31
    相关资源
    最近更新 更多