面板布局与分隔符的排列方式

4
我有一个关于使用TPanels和DevExpress的TcxSplitter布局的问题。 主窗体有一些面板A到G。A-F收集在一个面板ABCDEF中。 ABCDEF包含3个面板:AB,CDE和F。 面板CDE包含面板CD。
在所有面板之间的限制之间都有一个DevExpress的TcxSplitter。 问题是用户可以取ABCDEF和G之间的分隔器并将其向左移动,以达到覆盖面板CDE的面板AB。我不想允许那样做。
相反,我希望面板CDE具有最小宽度,比如5像素。然后面板AB的宽度应该缩小。希望我解释得足够清楚 :) 我已经尝试在面板CDE上设置constraint.minwidth = 5,但是面板仍然可以被隐藏。也许Devexpress有一些不错的解决方案?
问候

哇,我真的很惊讶你已经在这个分割器上取得了如此大的进展。分割器组件可能是vcl中最不可操作的组件。我建议你看一下raize组件的splitterpanel。我发现它更容易使用。 - Vegar
这只是一个烦人的小故障,总体而言我对Devexpress组件套件感到满意。应用程序大量使用它们,主要用于网格。 - Roland Bengtsson
我原以为dxSplitter只是包含的vcl分隔器的更漂亮版本。dxSplitter与标准vcl分隔器有什么不同吗? - Vegar
2个回答

2

cxSplitter有一个MinSize属性,在测试应用程序中我看到它在调整大小时被尊重。由于只有一个MinSize属性,因此对于分隔符两侧的面板进行检查,因此您不能为一侧指定50像素最小值,而另一侧的面板则为100像素。但请确保AutoSnap属性为false。

但是,分隔符上还有一个OnCanResize事件,因此您也可以在那里防止调整大小。

此外,由于您正在使用devex,我建议您使用dockSite / dockPanel或LayoutControl v2,而不是普通的Delphi TPanel。


我使用OnCanResize事件并防止超过限制进行调整大小。谢谢! - Roland Bengtsson

1
尝试使用这个属性。
cxSplitter1.ResizeUpdate:=True;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接