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

我想要TScrollBox的(左上方)位置。

浏览TScrollBox和TLayout这两个属性,找不到适合我的位置(尝试了很多)。还有其他方法可以做到,但是对我来说似乎是标准的,应该将它包括在基类中。

PS:对于平移,我使用TScrollBox.AniCalculations,但我认为这并不重要/没有帮助。

最佳答案

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


滚动视口原点的坐标,指定为相对于此滚动框内容布局的原点的偏移量。


documented here

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

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


应该很自我解释

或者OnHScrollChange()和/或OnVScrollChange()类型为TNotifyEvent

10-08 15:52