当面板改变尺寸时,如何将控件保持在面板的底部或右侧?

时间:2012-06-13 14:04:42

标签: delphi layout panel

有一些类似的问题与解决方案,但没有人回答我的问题,所以在这里。

使用TPanel进行TButton折叠/展开非常简单,或者我认为是这样。我玩了一下,把按钮放在最顶部(从上到下扩展/折叠高度)或左边(从左到右扩展/折叠宽度)按计划工作。事实上,所有可扩展/可折叠的“高级”面板都以完全相同的方式工作 - 按钮仅放置在顶部或左侧。很快我就撞墙了:如果你把按钮放在底部或右边分别用于扩展/折叠高度或宽度,按钮就会停留在它们所在的位置......客户区(?) - 我缺乏解释的知识这是正确的,但我会认为,除非另有说明,否则很清楚会发生什么。重点是,按照我这样做的方式,唯一的解决方案是重新定位面板中的按钮,但这可能会放在一些根本不可见的其他组件之上。

所以问题是:我怎样才能使这种情况正常发生?因为我调整面板大小然后重新定位按钮的想法看起来不是解决这个问题的正确方法。或者,我很乐意采取一些这样做的组件,但是从我检查过的组件中,所有组件都是相同的,甚至JEDI VCL TJvRollOut组件也可以设置Placement(按钮/标题) )只有plTopplLeft,所以我认为这不是那么简单吗?

2 个答案:

答案 0 :(得分:6)

将您的按钮Anchors设置为[akLeft, akBottom]

enter image description here

答案 1 :(得分:0)

在delphi中调整任何工具的对齐有两个属性:

  1. 对齐(alNone,alLeft,alRight,alTop ....)

  2. 主播(akLeft,akRight,akTop,akBottom)

  3. e.g。 你有一个面板并在TPanel上拖动一个TEdit。现在,您希望TEdit仅占据TPanel的左上角,并且它与面板的底部和右侧角落的距离应保持不变,而不管是否更改面板尺寸(这意味着如果沿着底部或右侧角落扩展面板,则TEdit会扩展)。

    1. 设置对齐 - > alNone。 (不是alLeft或者tEdit会占据面板上的整个左侧区域,而不仅仅是左上角)。
    2. 设置锚点 - > akLeft = akTop = akRight = akBottom =真。              如果你设置akLeft = akTop = True和akRight = akBottom = False:那么TEdit的大小在沿着底角或右角扩展面板时保持不变。