TCategoryPanel 到 TCategoryPanelGroup 的顺序
Order of TCategoryPanel into TCategoryPanelGroup
我得到了一个完整的 Delphi 应用程序,其中包含 32 种不同的数据输入形式。我有 1 个主要的 TCategoryPanelGroup,上面有 115 个不同的 TCategoryPanel。
我们在每个表单上找到了 6 个主要的 TCategoryPanel(main1,到 main6),我们向其中的每一个添加了一些特定的(特定的 1、2、3 等)TCategoryPanel。
所有表单都已在应用程序中预先构建,而不是在运行时构建。
这是我管理这些表格的方式(32 个表格,每个表格平均有 10 个信息面板)
- 在运行应用之前,所有面板都是可见的错误并且都正确排序;
- 用户选择了 32 种形式中的一种;
- 我确实按顺序显示(可见)这些面板:
main1、main2、main3、specific1、specific2、main4、main5 和 main6;
- 比我向用户显示表单;
- 关闭表单时,我按顺序隐藏(可见 false):main6、main5、main4、specific 2、specific 1、main3、main2 和 main1;
然后用户可能会打开另一个不同的表单(来自 32),然后再次进行相同的过程。但不知何故,面板的顺序并不总是与我展示的顺序相同(可见真实)。
有时,specific1 面板出现在 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
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 的顺序。
如果您总是以相同的顺序显示相同数量的面板,则以相反的顺序隐藏(可见:= false)它们并按顺序显示(可见:= true)它们可能会起作用。
我发现这个 post 与启发我的 TOP 属性 相关:How to reorder categories in TCategoryPanelGroup (Delphi XE)。在这个 post 中,解决方案是为第一个面板给出从 0 开始的准确 TOP 值,第二个等于第一个面板的高度值,依此类推。
我发现在显示所有面板之前给所有面板相同的 TOP 值会容易得多...注意,为了防止面板混乱,您需要提供一个 TOP 值大于您可以在TCategoryPanelGroup 面板折叠为 false。
因此,无论确切顺序如何,都隐藏所有面板并给它们 TOP 值 := 10000 现在已修复。
回顾:
- 所有面板都是不可见的{无论您使它们不可见的顺序如何}。
- 所有面板都获得相同的 TOP 值:= 10000; {大于最长形式的价值}
- 按照从顶部到底部必须出现的确切顺序显示面板;
大功告成!
My MCVE with the solution included download it here
我得到了一个完整的 Delphi 应用程序,其中包含 32 种不同的数据输入形式。我有 1 个主要的 TCategoryPanelGroup,上面有 115 个不同的 TCategoryPanel。
我们在每个表单上找到了 6 个主要的 TCategoryPanel(main1,到 main6),我们向其中的每一个添加了一些特定的(特定的 1、2、3 等)TCategoryPanel。
所有表单都已在应用程序中预先构建,而不是在运行时构建。
这是我管理这些表格的方式(32 个表格,每个表格平均有 10 个信息面板)
- 在运行应用之前,所有面板都是可见的错误并且都正确排序;
- 用户选择了 32 种形式中的一种;
- 我确实按顺序显示(可见)这些面板: main1、main2、main3、specific1、specific2、main4、main5 和 main6;
- 比我向用户显示表单;
- 关闭表单时,我按顺序隐藏(可见 false):main6、main5、main4、specific 2、specific 1、main3、main2 和 main1;
然后用户可能会打开另一个不同的表单(来自 32),然后再次进行相同的过程。但不知何故,面板的顺序并不总是与我展示的顺序相同(可见真实)。
有时,specific1 面板出现在 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
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 的顺序。
如果您总是以相同的顺序显示相同数量的面板,则以相反的顺序隐藏(可见:= false)它们并按顺序显示(可见:= true)它们可能会起作用。
我发现这个 post 与启发我的 TOP 属性 相关:How to reorder categories in TCategoryPanelGroup (Delphi XE)。在这个 post 中,解决方案是为第一个面板给出从 0 开始的准确 TOP 值,第二个等于第一个面板的高度值,依此类推。
我发现在显示所有面板之前给所有面板相同的 TOP 值会容易得多...注意,为了防止面板混乱,您需要提供一个 TOP 值大于您可以在TCategoryPanelGroup 面板折叠为 false。
因此,无论确切顺序如何,都隐藏所有面板并给它们 TOP 值 := 10000 现在已修复。
回顾:
- 所有面板都是不可见的{无论您使它们不可见的顺序如何}。
- 所有面板都获得相同的 TOP 值:= 10000; {大于最长形式的价值}
- 按照从顶部到底部必须出现的确切顺序显示面板;
大功告成!
My MCVE with the solution included download it here