如何使两个控件占据父母区域的一半?

时间:2013-05-21 12:46:40

标签: delphi delphi-xe vcl

我有一个附加了侧边栏的应用程序(TPanel - > alRight),它在其中使用了CategoryPanel(alClient)。此CategoryPanel正好有2个未对齐的组。我想分享这两组的边界,以便以50/50的比例填满整个面板空间。不幸的是,CategoryGroups在设计时不支持对齐,这迫使我每次想要测试它时都要运行我的应用程序。我尝试将每个CategoryGroup设置为面板的一半高度,但它显示滚动条。 (见图2)

如何以50/50的比例正确对齐/共享边界?

Image1 Image2

1 个答案:

答案 0 :(得分:5)

根据您的评论,您希望运行此代码:

procedure TForm1.UpdateGroupHeights;
begin
  if not CategoryPanel1.Collapsed then
    CategoryPanel1.Height := CategoryPanelGroup1.ClientHeight div 2;
  if not CategoryPanel2.Collapsed then
    CategoryPanel2.Height := CategoryPanelGroup1.ClientHeight -
      CategoryPanelGroup1.ClientHeight div 2;
end;

每当您想要影响群组布局的任何更改时。所以我认为您需要从以下事件中调用此函数:

  • 表单的OnCreate事件。
  • OnResize的{​​{1}}事件。
  • 两个类别面板的TCategoryPanelGroupOnCollapse事件。

虽然当一个面板折叠而另一个面板展开时,看起来有点奇怪。就个人而言,我会重新编写代码以填充所有可用空间。

OnExpand