我得到了一个完整的 Delphi 应用程序,其中包含 32 种不同的数据输入表单。我有 1 个主 TCategoryPanelGroup,上面有 115 个不同的 TCategoryPanel。
我们在每个表单上找到了 6 个主要 TCategoryPanel(main1 到 main6),并且我们向每个表单添加了一些特定的(具体 1、2、3 等)TCategoryPanel。
所有表单都已在应用程序中预构建,而不是在运行时构建。
这就是我管理这些表单的方式(32 个表单,每个表单平均有 10 个信息面板)
- 在运行应用程序之前,所有面板均显示为 false,并且所有面板的顺序均正确;
- 用户选择了 32 种表单之一;
- 我确实按顺序显示(可见 true)这些面板: 主要1、主要2、主要3、具体1、具体2、主要4、主要5和主要6;
- 然后我向用户展示表单;
- 关闭表单时,我按顺序隐藏(visible false):main6、main5、main4、具体 2、具体 1、main3、main2 和 main1;
用户可能会打开另一个不同的表单(从 32 开始),并且相同的过程会再次进行。但不知何故,面板的顺序并不总是与我显示的(可见真实)它们相同。
有时,specific1 面板出现在 main1 之前,甚至在 main6 之后。 第一个打开的表单总是好的,打开和关闭不同的表单后,所有面板订单都混淆了。
我花了一些时间在网上查找,试图了解 TCategoryPanelGroup 在显示和隐藏面板时管理面板顺序的方式,然后你就可以了,我需要帮助。
嗯,问题很简单,是否有不同的方法来管理 TCategoryPanelGroup 上的面板顺序以满足我的需求?我们可以简单地让它们可见,而不是重新排列顺序吗?
到目前为止,我主要关注这两个链接,以获得类似的内容,但无法理解:
http://www.devsuperpage.com/search/Articles.aspx?G=2&ArtID=92075 http://codeverge.com/embarcadero.delphi.vcl.using/order-of-tcategorypanels-on-tcat/1066818
My MCVE
特定面板的数量:
- 表格 #1 = 4
- 表格 #2 = 2
- 表格#3 = 3
- 表格#4 = 2
测试A:
- 打开表格 #1 {好的}
- 关闭
- 打开表格#3{好的}
- 关闭
- 打开表单 #1 {不行,因为从最低 nb 的特定面板中还有 1 个面板尚未打开}
- 关闭
- 打开表格#4{好吧}他现在是特定开放小组中最低的 nb,得分为 2。
- 关闭
- 打开表格 #3 {不行,因为有 3 个特定面板,而目前打开的最低面板数已降至 2}
- 关闭应用程序。
测试B:
- 打开表格#3{好的}
- 关闭
- 打开表格 #4 {好的,具体的最低 nb 现在为 2}
- 关闭
- 打开表格 #3 {不行,因为有 3 个特定面板,而目前打开的最低面板数已降至 2}
- 关闭
- 打开表格 #2 {好的,因为我们现在已经等于 nb 的特定最低值,即 2}
- 关闭它
- 打开表格 #3 {不行,因为有 3 个特定面板,而现在打开的最低面板已降至 2 个。这里我们有另一种情况,因为特定的 #2、#6 和 #4 现在混合在一起,也没有重新分组}
- 关闭应用程序。
2种不同的整体情况:特定面板未重新分组以及特定面板顺序混淆。在逐个打开表格之前我确实了解发生了什么,但找不到解决方法。
最佳答案
好吧,我自己搞定了
TCategoryPanelGroup 使用 TOP 属性管理 TCategoryPanel 的顺序。
如果您始终有相同数量的面板以相同的顺序显示,则以相反的顺序隐藏(可见:假)它们并按顺序显示(可见:=真)它们可能会起作用。
我发现这篇文章与启发我的 TOP 属性相关:How to reorder categories in TCategoryPanelGroup (Delphi XE) 。在这篇文章中,解决方案是为第一个面板提供从 0 开始的精确 TOP 值,第二个面板等于第一个面板的高度值,依此类推。
我发现在显示所有面板之前给它们相同的 TOP 值会更容易...小心,为了防止面板困惑,您需要给出一个大于 TCategoryPanelGroup 中最长形式的 TOP 值面板折叠为 false。
因此,无论确切的顺序如何,隐藏所有面板并向每个面板赋予 TOP 值 := 10000 现在已修复。
回顾:
- 所有面板都是不可见的{无论您以何种顺序使它们不可见}。
- 所有面板都有相同的 TOP 值 := 10000; {比最长形式更有值(value)}
- 按照从上到下的确切顺序显示面板;
我们就这样完成了!
My MCVE with the solution included download it here
关于delphi - TCategoryPanel 到 TCategoryPanelGroup 的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31397488/