Firemonkey ScrollBox的Bug

我们正在经历Firemonkey的ScrollBox组件中的一个奇怪的错误(因为TGridTScrollBoxinheritance,它也影响所有的网格)。 在我们的开发机器上,一切正常,而另一些则发生错误。 我们没有检测到系统之间的任何模式(我们检查了操作系统,graphics硬件,DirectX版本)。

再生产:

  1. 创build一个新的FireMonkey应用程序。 在表单上放置一个TScrollBox
  2. 将一个button添加到滚动框并将其垂直位置设置为500000。
  3. 启动应用程序,并检查滚动到滚动框结束时是否显示button。

如果发生错误,button不可见。

使用网格时,会导致1-19047行正确显示,并且不会显示19047年以后的所有行。

有没有人知道这可能是什么原因造成的? 或者有什么想法,我们如何更详细地确定问题?

在滚动出现各种各样的问题之后,我得出结论:在firemonkey中有一个滚动组件的初始化问题,这在滚动的滚动行为中performance出来。 有时会起作用,有时候不会…

在考虑过多次修复问题之后,只有在随后的编译(或者不同的操作系统)上才能看到问题,在添加完所有子组件之后,我已经成功地调用了组件的UpdateStyle方法。 也就是说,自从添加电话以来,问题没有重现。

例如下面的伪代码填充滚动组件,然后调用UpdateStyle这似乎迫使组件修复各种属性无效设置 – 最小值,最大值等

 for i := 1 to x do MyScrollComponent.AddObject(MyObject[i]); MyScrollComponent.UpdateStyle; 

希望这也适用于你…