2

我正在使用 Embarcadero Software 的 C++Builder 来显示一些基于表单的图形;画布是可滚动的,当您移动鼠标滚轮时,事件处理程序会进行一些内部计算,以决定滚动条的位置。然后它设置滚动条的位置。

大致是这样的:

if (ScrollBox->HorzScrollBar->IsScrollBarVisible() )
{
    OffsetX = MyHorzScroll + 0.5;  // round to int
    ScrollBox->HorzScrollBar->Position = OffsetX;
    }

其中 ScrollBox 的类型为 FMX.Layouts.TScrollBox。问题是,间歇性地,位置实际上并没有达到我设置的值。有两种情况让我怀疑这是内存覆盖问题:首先,当我注释掉一些设置名为 MyScale 的成员变量的行时,错误消失了;其次,当我将 OffsetX 的声明更改为静态存储时,它也会消失。该文档并没有真正提供有关更深内存要求的任何提示——帮助告诉我,我可以使用 = 函数将 Position 设置为任何 int 值,它应该可以工作(尽管它不仅仅是一个简单的整数,=应该被一个负责处理它的setter函数覆盖)。

任何人都知道如何强制 Borland/Embarcadero 滚动条工作?

4

0 回答 0