我正在使用delphi xe2(完全更新)和Express QuantumGridSuite 13.2.2。我在网格上有很多列,我为某些列设置了RepositoryItem。 EditREpository组件是另一种形式。有时列repositoryItem属性是随机清除的。我认为有些事情正在触发但我无法找到这是什么,这是怎么回事? 为你的帮助提供帮助。
答案 0 :(得分:2)
组件值变得“丢失”的问题"在设计时,即使有EMBA自己的组件,也是一种已知的现象。通常,它首先在IDE中打开表单时显示出来。
根据我的经验,ymmv,它几乎总是发生在表单A的某个组件的属性上,它引用了表单B上的组件,如果在表单B之前在IDE中打开表单A,它似乎更频繁地发生。 / p>
无论如何,你可以做些事情来尝试识别问题,至少可以使用一种解决方法,直到你这样做。但是,在你开始之前,首先要做的事情,如果你还没有,就是问Devex是否他们知道这个问题。没有不尊重这里的读者,但他们更有可能知道,而且可能会发现您错过了修复它的维护更新。
当我自己编写的组件发生时,通常是由于我对组件的初始化和/或属性设置器的编码有些错误造成的。在我自己的组件中'在这种情况下,我总是很幸运,虽然起初行为似乎随机,但实际上已经转变为IDE中触发它的特定行动序列。如果您能够确定可重现的动作序列,那么您可以通过90%的方式解决问题。
最好的起点是在问题前状态下对代码进行引用备份。然后在IDE中尝试各种动作序列,回滚到你之间的引用,直到找到引发问题的动作。如果这听起来很乏味,那就是,但你可能会很幸运,并在早期发现一种模式。如果你不这样做,那就继续提醒自己这个问题似乎是随机的,因为你还没有发现这个模式。
但是,我有一种印象(虽然没有证据)另一个行为不当的组件可能会干扰正在失去价值的组件属性的设置。因此,要注意的一件事是其他组件与受影响的组件在同一表单上。并非所有的谱系都与Quantum Grid及其来自Devex的兄弟姐妹具有相同的血统。
我发现有效将问题与我自己编写的组件隔离开来的事情是:
正如您可能已经注意到的,关于此问题最棘手的问题之一是,如果组件处于很少使用的形式,通常您听到的第一个就是用户报告它时。
无论如何,尽管如此,如果您能够提出一个只有Devex组件和标准组件的可重复测试案例,可以提交给他们进行调查,我相信它不会花很长时间找到并解决问题。而且我确信如果它们在自己的代码中,他们会解决它(我希望EMBA本身也是如此)。
但是,如果没有可重现的测试用例,我认为您希望做的最好的事情是在表单的创建中添加显式代码,以便在运行时设置组件值,例如:首次创建表单时。对于我自己的问题组件,我曾经发现一次或两次仔细跟踪我已添加的代码,这导致了问题的原因。