gpt4 book ai didi

delphi - 如何使两个控件各自占据其父级区域的一半?

转载 作者:行者123 更新时间:2023-12-03 18:22:20 24 4
gpt4 key购买 nike

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

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

Image1 Image2

最佳答案

根据您的评论,您想要运行此代码:

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 事件。
  • TCategoryPanelGroupOnResize 事件。
  • 两个类别面板的 OnCollapseOnExpand 事件。

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

if not CategoryPanel1.Collapsed then
;//nothing to do
if CategoryPanel1.Collapsed and not CategoryPanel2.Collapsed then
CategoryPanel2.Height := CategoryPanelGroup1.ClientHeight-CategoryPanel1.Height;
if not CategoryPanel1.Collapsed and CategoryPanel2.Collapsed then
CategoryPanel1.Height := CategoryPanelGroup1.ClientHeight-CategoryPanel2.Height;
if not CategoryPanel1.Collapsed and not CategoryPanel2.Collapsed then
begin
CategoryPanel1.Height := CategoryPanelGroup1.ClientHeight div 2;
CategoryPanel2.Height := CategoryPanelGroup1.ClientHeight-CategoryPanel1.Height;
end;

关于delphi - 如何使两个控件各自占据其父级区域的一半?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16670388/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com