我们正在经历在Firemonkey的ScrollBox组件中似乎是一个奇怪的错误(因为TGrid继承自TScrollBox它也影响所有网格)。在我们的开发机器上,一切工作正常,而在其他人的错误发生。我们未能检测到系统之间的任何模式(我们检查操作系统,图形硬件,DirectX版本)。
再生产:
>创建一个新的FireMonkey应用程序。在表单上放置一个TScrollBox。
>向滚动框添加按钮,并将其垂直位置设置为500000。
>启动应用程序,并检查当滚动到滚动框的末尾时是否显示按钮。
如果发生错误,该按钮不可见。
当使用网格时,这将导致正确显示行1-19047,并且不显示19047及以上的所有行。
有任何人有任何想法,可能是什么导致这?或任何想法如何我们可以更详细地识别问题?
解决方法
在遇到各种各样的滚动问题后,我得出结论,在firemonkey中滚动组件有一个初始化问题,它表现在狡猾的滚动行为。有时它会工作,有时它不会…
之后,我认为我修复了这个问题几次,只有观察问题重新出现在后续的编译(或不同的操作系统),我已经在添加所有子组件后调用组件的UpdateStyle方法取得了很大的成功。也就是说该问题尚未重新出现,因为添加了呼叫…
例如。以下伪代码填充滚动组件,然后调用UpdateStyle,这似乎迫使组件“修复”各种属性的无效设置 – 最小,最大等。
for i := 1 to x do MyScrollComponent.AddObject(MyObject[i]); MyScrollComponent.UpdateStyle;
希望这也为你工作…