gpt4 book ai didi

delphi - 根据所有行的数据在 cxGrid 中设置样式

转载 作者:行者123 更新时间:2023-12-03 02:28:02 26 4
gpt4 key购买 nike

我有一些网格,用户可以在其中输入从-到日期,并且希望在日期间隔与其他行日期间隔重叠的行上设置背景颜色。

现在我在数据集上使用 oncalc 事件来设置重叠标志,但这是一个缓慢的解决方案,我想知道它是否可以在 cxGrid 中解决。

奥维B-)

最佳答案

我认为您应该能够以相当简单的方式做到这一点。事实cxGrid 可以对数据行进行分组,并且可以切换到或切换出分组模式表明,一旦网格加载了数据集,它就拥有了所有可用于对网格中的行进行分组、取消分组和排序所需的数据,而无需重新遍历相关数据集。可以通过 DBTableView 的 DataController 的 Values 属性访问数据。

您可以通过 Values 属性访问网格中 DBTableView 中的数据行其关联的 DataController(请参阅其他答案或 cxGrid 的在线帮助)就好像它是一个二维数组或矩阵 - 第一个维度是行第二个是网格的列值之一的索引。

我将如何尝试你的任务是

  • 向数据集中添加一个 fkInternalCalc 标志字段以指示该行应如何有颜色。需要在 OnCalcFields 事件中设置其值,也不需要OnCalcFields 中的其他任何内容。包含此计算字段的原因只是这是一种获得 Values[] 值的简单方法,而无需得到涉及“未绑定(bind)”网格列。

  • 将数据加载到网格后,将其作为二维数组进行处理,以确定哪个行需要特殊着色并为计算字段设置 Values[entry]

  • 使用 DBTableView 的 OnCustomDrawCell 事件根据需要为单元格着色。

这可能需要对其实现细节进行一些微调,但我认为原则上它应该可行。

注意:只有当 DataController 的 IsGridMode 属性设置为 False 时,这才有效。如果设置为 True,则任何时候仅加载数据集行的子集,因此网格不会分组,您将无法处理整个数据集在 DataController 的 Values 属性中使用其 2D 表示。

关于delphi - 根据所有行的数据在 cxGrid 中设置样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36865193/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com