我正在使用Embarcadero Software的C ++ Builder来显示一些基于表单的图形;画布是可滚动的,当您移动鼠标滚轮时,事件处理程序会执行一些内部计算,以确定滚动条的位置。然后它设置滚动条位置。
像这样,粗略地说:
if (ScrollBox->HorzScrollBar->IsScrollBarVisible() )
{
OffsetX = MyHorzScroll + 0.5; // round to int
ScrollBox->HorzScrollBar->Position = OffsetX;
}
其中ScrollBox的类型为FMX.Layouts.TScrollBox。问题在于,间歇性地,Position实际上并没有达到我设置的值。有两种情况让我怀疑它是一个内存覆盖问题:首先,当我提出一些设置名为MyScale的成员变量的行时,错误消失了;第二,当我将OffsetX的声明更改为静态存储时,它也会消失。文档并没有真正提供有关更深层内存需求的任何提示 - 帮助告诉我我可以使用=函数将Position设置为任何int值,它应该可以工作(虽然它不仅仅是一个简单的整数,但=应该用一个处理它的setter函数重写。)
任何人都知道如何强制使用Borland / Embarcadero滚动条?