首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在左边对齐MDIChild?

如何在左边对齐MDIChild?
EN

Stack Overflow用户
提问于 2010-04-14 23:45:19
回答 3查看 1.6K关注 0票数 1

我正在努力将MDIChild表单与父MDIForm的左侧对齐,在设计时设置Align:=alLeft。在父MDIForm上,工具栏与alTop对齐。显然对齐的MDIChild比父窗体的客户区高(我不知道为什么),这就是为什么垂直滚动条出现在父窗体上的原因。问题是,我希望动态创建这个表单;在这些MDIchild表单之间放置垂直拆分器,以便通过鼠标调整它们的大小。但当我创建拆分器时,它会完全靠左对齐,就好像MDIChild表单根本没有对齐(alLeft)一样。

我将MDIChild参数设置为:

代码语言:javascript
复制
Align:=alLeft;
Windowstate:=wsNormal; 
Borderstyle:=bsSizable;

以前有人解决过这个问题吗?

非常感谢

P.S Delphi 7,Win XP

EN

回答 3

Stack Overflow用户

发布于 2010-04-14 23:59:53

MDI子控件与常规的嵌套控件(如TSplitter )是分开处理的,因此像"Align := alLeft“这样的东西不能与它们一起工作。MDI区域是所有其他控件对齐后剩下的部分。

最好的方法是使用框架,或者将子窗体直接放在窗体上,而不使用MDI支持(设置Child.Parent := MainForm)。如果您真的想使用MDI支持,我认为您需要编写自己的TMDISplitter组件。您可以尝试在运行时使用TSplitter.CreateParented(MainForm.ClientHandle)创建TSplitter,但我怀疑它是否能正常工作。

票数 0
EN

Stack Overflow用户

发布于 2010-04-15 04:49:38

如果您使用MDI接口只是为了将“对齐的”窗体放在主窗体中,我建议您使用其他方法,例如,使用主fsNormal窗体和子窗体,并将子窗体停靠在父窗体中(可能是在面板中)。

如果您感兴趣,请看下子窗体的ManualDock方法和主窗体面板的DockSite属性。

在这种情况下,常规拆分器可以很好地为您工作。

票数 0
EN

Stack Overflow用户

发布于 2010-04-19 14:54:18

我发现最好的解决方案是基于TFrame和普通TForm方法的组合。我使用各种组件(TPanel、TButton、TShape)在TFrame对象中创建了所有边框、标题栏、表单按钮及其行为。这个对象是我放在“普通”TForm上的。我将TForm属性设置为:

TForm.FormStyle:=fsNormal;TForm.BorderStyle:=bsNone;TForm.WindowState:=wsMaximized;

TForm.Align:=alClient;

通过编程,我将此TForm设置为容器TPanel的父对象,它是具有alClient属性的普通TPanel。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2638868

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档