有时CxGrid列会丢失RepositoryItem属性

时间:2014-09-01 12:21:14

标签: delphi devexpress delphi-xe2 tcxgrid

我正在使用delphi xe2(完全更新)和Express QuantumGridSuite 13.2.2。我在网格上有很多列,我为某些列设置了RepositoryItem。 EditREpository组件是另一种形式。有时列repositoryItem属性是随机清除的。我认为有些事情正在触发但我无法找到这是什么,这是怎么回事? 为你的帮助提供帮助。

1 个答案:

答案 0 :(得分:2)

组件值变得“丢失”的问题"在设计时,即使有EMBA自己的组件,也是一种已知的现象。通常,它首先在IDE中打开表单时显示出来。

根据我的经验,ymmv,它几乎总是发生在表单A的某个组件的属性上,它引用了表单B上的组件,如果在表单B之前在IDE中打开表单A,它似乎更频繁地发生。 / p>

无论如何,你可以做些事情来尝试识别问题,至少可以使用一种解决方法,直到你这样做。但是,在你开始之前,首先要做的事情,如果你还没有,就是问Devex是否他们知道这个问题。没有不尊重这里的读者,但他们更有可能知道,而且可能会发现您错过了修复它的维护更新。

当我自己编写的组件发生时,通常是由于我对组件的初始化和/或属性设置器的编码有些错误造成的。在我自己的组件中'在这种情况下,我总是很幸运,虽然起初行为似乎随机,但实际上已经转变为IDE中触发它的特定行动序列。如果您能够确定可重现的动作序列,那么您可以通过90%的方式解决问题。

最好的起点是在问题前状态下对代码进行引用备份。然后在IDE中尝试各种动作序列,回滚到你之间的引用,直到找到引发问题的动作。如果这听起来很乏味,那就是,但你可能会很幸运,并在早期发现一种模式。如果你不这样做,那就继续提醒自己这个问题似乎是随机的,因为你还没有发现这个模式。

但是,我有一种印象(虽然没有证据)另一个行为不当的组件可能会干扰正在失去价值的组件属性的设置。因此,要注意的一件事是其他组件与受影响的组件在同一表单上。并非所有的谱系都与Quantum Grid及其来自Devex的兄弟姐妹具有相同的血统。

我发现有效将问题与我自己编写的组件隔离开来的事情是:

  • 从表单中删除所有其他组件。
  • 看看我是否能找到可重现的动作序列(例如打开的订单表格),以解决问题。
  • 编辑DFM,使受影响的组件显示在其中的最后。同上,首先。
  • 在另一个自身实例中运行IDE。执行此操作的主要原因是,您是否(或者更确切地说是调试器)可以取消屏蔽在某些设计时组件代码中发生的正常无提示异常,该异常可能涉及到属性值的丢失。 Devex的量子网格被广泛使用(我自己做),有很长的血统,他们的代码通常是最高质量的。虽然我不能想象它是完美的,但我会先假设问题是由其他原因造成的。

正如您可能已经注意到的,关于此问题最棘手的问题之一是,如果组件处于很少使用的形式,通常您听到的第一个就是用户报告它时。

无论如何,尽管如此,如果您能够提出一个只有Devex组件和标准组件的可重复测试案例,可以提交给他们进行调查,我相信它不会花很长时间找到并解决问题。而且我确信如果它们在自己的代码中,他们会解决它(我希望EMBA本身也是如此)。

但是,如果没有可重现的测试用例,我认为您希望做的最好的事情是在表单的创​​建中添加显式代码,以便在运行时设置组件值,例如:首次创建表单时。对于我自己的问题组件,我曾经发现一次或两次仔细跟踪我已添加的代码,这导致了问题的原因。