【问题标题】:Can I alter control layout on the fly?我可以即时更改控件布局吗?
【发布时间】:2017-05-23 14:17:23
【问题描述】:

有没有办法将窗口或对话框从垂直布局更改为水平布局?

例如从这个(狭窄的高窗)

A: -------  
B: -------  
C: --------  
D: --------  

到这个(方形窗口)

A:-------- C:-------
B:-------- D:--------

到这个(宽窗口)。

A:------ B:------- C:-------- D:---------

当我调整窗口大小时? A、B、C、D是编辑框或组合框等

显然,我可以使用具有 3 个(或更多)页面和不可见选项卡的页面控件并在这些页面之间交替使用,但我希望这样做没有这样的重复。

我希望有一个不需要我编写代​​码的解决方案。

【问题讨论】:

  • 当然可以。您可以在 OnResize 事件处理程序中更改控件的位置。
  • 看起来 TFlowPanel 可以帮助您实现这一目标。
  • 您可以覆盖容器AlignControls 并调整布局。与TFlowPanelTGridPanel 的方法相同

标签: delphi vcl


【解决方案1】:

此示例使用TFlowPanel。它被添加到表单中,Align 设置为 alClient。四个TEdit 控件被添加到TFlowPanel。在调整表单大小时,它们会按照您描述的方式自动重新调整自己。

更改FlowStyle 属性允许您自定义布局行为。上面显示了默认的fsLeftRightTopBottom 给予:

 A:-------- B:-------
 C:-------- D:--------

在方形窗口中。但是,使用 fsTopBottomLeftRight 将为您提供问题中的布局。

 A:-------- C:-------
 B:-------- D:--------

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-15
    • 2018-11-01
    • 2015-10-01
    相关资源
    最近更新 更多