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

时间:2018-06-11 12:42:11

标签: delphi firemonkey delphi-10.2-tokyo

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

我喜欢TScrollBox (image)的(左上角)位置。

查看TScrollBox& TLayout属性我找不到适合我的位置(尝试了很多)。还有其他方法可以做到,但它对我来说似乎是标准的,应该(?)包含在基类中。

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

1 个答案:

答案 0 :(得分:2)

要阅读该位置,请使用ViewportPosition的{​​{1}}属性。它是TScrollBox,被描述为:

  

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

documented here

如果您在平移期间需要活动,请使用TPointF类型的OnViewportPositionChange()事件 它没有正确记录,但声明为:

TPositionChangeEvent()

应该是非常自我解释

TPositionChangeEvent = procedure (Sender: TObject; const OldViewportPosition, NewViewportPosition: TPointF; const ContentSizeChanged: Boolean) of object; 和/或OnHScrollChange()类型OnVScrollChange()