滚动条并以嵌套形式与客户端对齐

时间:2011-04-27 07:44:12

标签: delphi

我的应用程序有一个表单 - 用于设计其他表单并包含一个Object Inspector(bas ascii art follow)

-----------------------
|obj | design forms   | 
|insp| here           |
|    |                |
-----------------------

因此,应用程序的主窗体包含对象窗体和可放置组件的另一个窗体(顶部还有一个工具栏用于选择组件,但我没有显示它。)

现在,如果我将主窗体放大,我希望扩展内容以适应它...

-------------------------------
|obj | design forms           | 
|insp| here                   |
|    |                        |
|    |                        |
|    |                        |
-------------------------------

所以我的“表单设计器”表单有Align := alClient;

但是,如果我在其上放置一个组件,那么它会与边缘重叠......

-------------------------------
|obj | design forms           | 
|insp| here              -----------
|    |                   |component|
|    |                   -----------
|    |                        |
-------------------------------

当然屏幕显示

-------------------------------
|obj | design forms           |
|insp| here              -----|
|    |                   |comp|
|    |                   -----|
|    |                        |
-------------------------------

我想要一个自动滚动条。

但是,似乎Align := alClient;会覆盖AutoScroll:= true;

知道如何解决这个冲突吗? 1)设计师区域应缩小和增长,当主要形式调整大小时,总是填充主要形式的右侧部分 2)如果放置的元件会悬挂在设计师形状的边缘上,那么它应该生长滚动条

我完全忽略了这一点?我有处理组件放置的代码 - 如果我需要添加滚动条,我应该在那里检查吗?

1 个答案:

答案 0 :(得分:1)

我认为一个相对简单的解决方案是将表单的Align切换为alNone,并在父表单的resize事件上定位和调整它的大小。大概你在那里有一个分裂器,你也需要听一些大小的事件。

只要您只有检查员和设计表格,那么这是一个非常简单的实施方案。如果你有更多的工具窗口那么它会变得更加棘手,但基本的想法可以扩展。