平移时如何获取 TScrollBox 在 TLayout 中的位置?

How can I get the position of TScrollBox in TLayout while panning?

我正在使用父 FMX.Layouts.TScrollBox 来缩放和平移子 TLayout。一旦 TLayout 大于 TScrollBox,就可以进行平移。

我想要 TScrollBox 的(左上)位置

查看 TScrollBox 和 TLayout 属性我找不到适合我的位置(尝试了很多)。还有其他方法可以做到这一点,但对我来说这似乎是标准的并且应该(?)包含在基础 class.

PS:对于平移我使用 TScrollBox.AniCalculations 但我不认为 matters/helps.

要读取位置,请使用 TScrollBoxViewportPosition 属性。这是一个 TPointF,描述为:

Coordinates of the origin of the scrolling viewport specified as the offset from the origin of the content layout of this scroll box.

documented here

如果在平移过程中需要事件,请使用类型为 TPositionChangeEvent()OnViewportPositionChange() 事件 它没有正确记录,但声明为:

TPositionChangeEvent = procedure (Sender: TObject;
                         const OldViewportPosition, NewViewportPosition: TPointF;
                         const ContentSizeChanged: Boolean) of object;

应该很清楚

或者 OnHScrollChange() and/or OnVScrollChange() 类型 TNotifyEvent