我有一个完整的Delphi应用程序,有32种不同形式的数据输入。我有1个主要的TCategoryPanelGroup,上面有115个diffrents TCategoryPanel。
我们在每个表单上找到了6个主要的TCategoryPanel(main1,到main6),我们在其中添加了一些特定的(特定的1,2,3等等)TCategoryPanel给每个表单。
所有表单都已在应用程序中预先构建,并未在运行时构建。
我管理这些表格的方式(32种表格,每种表格平均有10个面板)
用户可以打开另一个不同的表单(从32开始),同样的过程再次进行。但不知何故,面板的顺序并不总是与我所展示的相同(可见真实)。
有时,special1面板在main1之前或者甚至在main6之后。 第一种形式是开放总是很好,在打开和关闭不同形式后,所有面板订单都混合在一起。
我花了一些时间在网上试图了解TCategoryPanelGroup管理其面板顺序的方式,同时显示和隐藏它们,然后我就去了,我需要帮助。
嗯,问题很简单,是否有不同的方法来管理TCategoryPanelGroup上的面板顺序以满足我的需求?我们可以简单地让它们可见而不是重新排列顺序吗?
到目前为止,我专注于那些类似但无法解决的2个链接:
http://www.devsuperpage.com/search/Articles.aspx?G=2&ArtID=92075 http://codeverge.com/embarcadero.delphi.vcl.using/order-of-tcategorypanels-on-tcat/1066818
我的MCVE
特定小组的Nb:
测试A:
测试B:
2种不同的总体情况:未重新组合的特定面板和特定的面板顺序混合在一起。我确实理解了在一个接一个地打开表格之前发生了什么,但是找不到解决方法。
答案 0 :(得分:2)
好吧,自己拿到它
TCategoryPanelGroup使用TOP属性管理其TCategoryPanel的顺序。
隐藏(可见:false)它们的顺序相反,并且显示(可见:=真)它们按顺序可以工作,如果你总是有相同数量的面板以相同的顺序显示。
我发现这篇帖子与TOP属性相关,激发了我的灵感:How to reorder categories in TCategoryPanelGroup (Delphi XE)。在这篇文章中,解决方案是为第一个面板提供0的精确TOP值,第二个面板等于第一个面板的高度值,依此类推。
通过在展示它们之前给所有面板提供相同的TOP值,我觉得更容易一些...小心,为了防止面板混乱,你需要给出一个TOP值大于你在TCategoryPanelGroup中可能拥有的最长形式面板COLLAPSED为false。
所以在隐藏所有面板时,无论确切顺序如何,并给它们TOP值:= 10000,现在每个都是固定的。
RECAP:
我们已经完成了!
我的MCVE解决方案包括download it here