2010-02-19 38 views
4

我对DevExpress的TPanels和TcxSplitter有一个关于布局的问题。 panellayout http://pp.kpnet.fi/bengtsson/temp/layout.png分离器面板的布局

主窗体有一些面板A到G.A - F被收集在一个面板ABCDEF中。 ABCDEF包含3个面板: AB,CDE和F. 面板CDE包含面板CD。

在面板之间的所有限制之间有一个来自DevExpress的TcxSplitter。 问题是用户可以将ABCDEF和G之间的分离器移动到左侧,以便它到达面板AB并覆盖面板CDE。我不想这样做。

相反,我希望面板CDE的最小宽度为5像素。然后面板AB的宽度应该缩小。希望我解释得够好:) 我试图设置面板CDE上的constraint.minwidth = 5,但面板仍然可以隐藏。也许Devexpress对此有一些很好的解决方案?

问候

+0

哇。我只是很惊讶,你已经用这个分离器到目前为止。分离器组件可能是vcl中最不“可行”的组件。我建议你看看raize组件splitterpanel。我发现与它合作更容易。 – Vegar 2010-02-19 07:43:45

+0

这只是一个恼人的故障,总的来说我对Devexpress组件套件感到满意。该应用程序主要用于网格。 – 2010-02-19 08:08:17

+0

我虽然dxSplitter只是一个更漂亮的版本,包括VCL分配器。 dxSplitter与标准vcl分离器有什么不同? – Vegar 2010-02-19 12:52:43

回答

2

cxSplitter有minSize属性,从我在测试应用中看到,这是尊重。由于只有1个MinSize属性,因此会检查分隔线两侧的面板,因此您无法在分隔线的一侧指定最少50像素,另一侧指定100。请确保AutoSnap属性为false。

但是在分离器上也有一个OnCanResize事件,所以你也可以防止在那里调整大小。

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

+0

我使用OnCanResize事件并防止调整超出限制。谢谢! – 2010-02-22 06:38:53

1

调整时试试这个属性

cxSplitter1.ResizeUpdate:=True;