如何调整表格超出其父级边界的范围?

时间:2012-12-13 16:09:50

标签: delphi delphi-xe

此问题适用于两种情况。

(1)

第一个是MDI表单和MDI子句,在运行时如果我尝试水平或垂直调整表单大小我不能超过主MDI表单的边缘,某处必须有一个SetBounds或类似的东西阻止这种行为,因为鼠标只是抓住了边缘。

我想要的是能够在MDI表单边界之外/之外调整大小 - 这将显示主MDI表单上的滚动条(就像你移动子表单时一样)。

(2)

第二个是我发现MDI布局应用程序中的滚动有点烦人而且不是很讨人喜欢使用,所以我没有使用MDI,我想我可以通过在TScrollBox中设置一个Form来模拟它,我希望这样做更好的流畅滚动。但是,与第一种情况一样,在ScrollBox中放置一个Form仍然不允许在客户端外部调整大小 - 当您在ScrollBox周围移动Form时,执行此方法甚至不会显示滚动条。


您可以通过制作新的MDI应用程序来快速尝试。尝试使用右下角调整大小并尽可能向右/底拖动,鼠标停在主MDI客户端,防止外部调整大小。

那么我怎样才能在运行时允许一个Form,无论是MDI子节点还是要在父节点之外调整大小的TScrollBox的父节点?

我是否需要设置一个我可能忽略的简单属性,或者是否需要做更多工作,例如覆盖Form的消息?

1 个答案:

答案 0 :(得分:1)

MDI儿童不受其父母大小的约束,但在父母的边界之外不可见,因此不能在这些边界之外调整大小。

但是,您可以将它们移动到边界之外,因此如果将子窗体移动到左侧,只留下窗体的一部分可见,则可以将该可见部分调整到父窗口的边界。因此,尺寸没有真正的限制,但它只是一个功能限制,当它的尺寸处理/边框变得隐藏时,你不能进一步调整表格的大小。

我认为,不是将MDI子项放在滚动框上或调整MDI子项的大小,您最好将子项的内容放在滚动框上,并保留子表单本身。< / p>

或者,当然,您可以修改设计,以便您根本不需要滚动,但在不知道您的表单的情况下无法给出正确的建议。