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

根据您的意见,您想运行此代码:
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;
Run Code Online (Sandbox Code Playgroud)
每当您希望影响组布局的任何更改时.所以我认为您需要从以下事件中调用此函数:
OnCreate表格的事件.OnResize的事件TCategoryPanelGroup.OnCollapse和OnExpand两个类面板的事件.虽然当一个面板折叠而另一个面板展开时,这看起来有点奇怪.就个人而言,我会重新编写代码来填充所有可用空间.
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;
Run Code Online (Sandbox Code Playgroud)