Rem*_*eau 11
要避免调整新MDI子窗口的动画(以及延迟),请在创建子窗口之前将WM_SETREDRAW消息发送到父TForm的ClientHandle属性,然后在完成后再次发送,即:
Self.Perform(WM_SETREDRAW, False, 0);
... create child windows as needed ...
Self.Perform(WM_SETREDRAW, True, 0);
Windows.InvalidateRect(Self.ClientHandle, nil, True);
Windows.UpdateWindow(Self.ClientHandle);
Run Code Online (Sandbox Code Playgroud)
MDI是在Windows 3天(或可能更早的时候)开发出来的,并且近来得不到很好的支持.如果您需要具有不同表单的多个文档,我建议使用选项卡式界面.使用框架而不是表单,并创建新选项卡并在其上放置框架,对齐alClient.
MDI肯定比你引用的更负面.您可以在维基百科中找到关于此的讨论,甚至也可以在Windows界面指南中找到.MDI现已被弃用多年.微软本身不再以其"标准"形式使用MDI用于任何大型应用程序,它们通常只提供MDI仿真以及其他UI样式.
如果您的程序适用于具有多个屏幕的用户,则MDI和基于选项卡的UI都存在将文档窗口限制在父窗口内部的问题.
通过适当的应用程序设计,您无需在MDI和基于选项卡的UI之间做出决定.让您的用户决定他们最适合的用户界面,以及最适合他们工作风格的用户界面.允许多个独立的顶级文档窗口(在一个应用程序实例中或多个).它可以像为文档创建框架类一样简单,并在运行时决定是将它们嵌入到选项卡控件,MDI子窗口还是顶级窗口中.