39

我们在 Firemonkey 的 ScrollBox 组件中遇到了一个奇怪的错误(因为TGrid从它继承TScrollBox也会影响所有网格)。在我们的一些开发机器上,一切正常,而在其他机器上出现错误。我们未能检测到系统之间的任何模式(我们检查了操作系统、图形硬件、DirectX 版本)。

再生产:

  1. 创建一个新的 FireMonkey 应用程序。TScrollBox在表格上放置一个。
  2. 向滚动框添加一个按钮,并将其垂直位置设置为 500000。
  3. 启动应用程序并检查滚动到滚动框末尾时是否显示按钮。

如果发生错误,则按钮不可见。

使用网格时,这会导致 1-19047 行正确显示,而 19047 及以上的所有行都不会显示。

有人知道是什么原因造成的吗?或者知道如何更详细地识别问题?

4

1 回答 1

2

在遇到各种滚动问题后,我得出的结论是,firemonkey 中的滚动组件存在初始化问题,这体现在狡猾的滚动行为中。有时它会工作,有时它不会......

在考虑了我多次修复问题后,只是为了观察问题在后续编译(或不同的操作系统)中再次出现,在添加所有子组件后,我在调用组件的 UpdateStyle 方法方面取得了很大成功。即,自从添加呼叫以来,问题没有重新出现......

例如,以下伪代码填充滚动组件,然后调用 UpdateStyle,这似乎强制组件“修复”各种属性的无效设置 - 最小值、最大值等。

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

希望这对你也有用......

于 2011-11-24T02:18:34.763 回答