Firemonkey ScrollBox的Bug
我们正在经历Firemonkey的ScrollBox组件中的一个奇怪的错误(因为TGrid
从TScrollBox
inheritance,它也影响所有的网格)。 在我们的开发机器上,一切正常,而另一些则发生错误。 我们没有检测到系统之间的任何模式(我们检查了操作系统,graphics硬件,DirectX版本)。
再生产:
- 创build一个新的FireMonkey应用程序。 在表单上放置一个
TScrollBox
。 - 将一个button添加到滚动框并将其垂直位置设置为500000。
- 启动应用程序,并检查滚动到滚动框结束时是否显示button。
如果发生错误,button不可见。
使用网格时,会导致1-19047行正确显示,并且不会显示19047年以后的所有行。
有没有人知道这可能是什么原因造成的? 或者有什么想法,我们如何更详细地确定问题?
在滚动出现各种各样的问题之后,我得出结论:在firemonkey中有一个滚动组件的初始化问题,这在滚动的滚动行为中performance出来。 有时会起作用,有时候不会…
在考虑过多次修复问题之后,只有在随后的编译(或者不同的操作系统)上才能看到问题,在添加完所有子组件之后,我已经成功地调用了组件的UpdateStyle方法。 也就是说,自从添加电话以来,问题没有重现。
例如下面的伪代码填充滚动组件,然后调用UpdateStyle这似乎迫使组件修复各种属性无效设置 – 最小值,最大值等
for i := 1 to x do MyScrollComponent.AddObject(MyObject[i]); MyScrollComponent.UpdateStyle;
希望这也适用于你…