Как я могу получить положение TScrollBox в TLayout при панорамировании? - PullRequest
0 голосов
/ 11 июня 2018

Я использую родительский FMX.Layouts.TScrollBox для масштабирования и панорамирования дочернего TLayout.Как только TLayout становится больше, чем TScrollBox, возможно панорамирование.

Мне бы хотелось (вверху слева) положение TScrollBox (image).

Просмотр свойств TScrollBox и TLayout Iне могу найти позицию, которая работает для меня (перепробовал много).Есть другие способы сделать это, но мне кажется стандартным и должен (?) Быть включен в базовый класс.

PS: для панорамирования я использую TScrollBox.AniCalculations, но я не думаю, что это важно / помогает.

1 Ответ

0 голосов
/ 11 июня 2018

Чтобы прочитать позицию, используйте свойство ViewportPosition TScrollBox.Это TPointF и описывается как:

Координаты начала координат окна просмотра с прокруткой, указанного как смещение от начала расположения содержимого этого поля прокрутки.

Здесь задокументировано

Если вам нужно событие во время панорамирования, используйте событие OnViewportPositionChange() типа TPositionChangeEvent() Оно не задокументировано надлежащим образом, но объявлено как:

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

Должен быть самоочевидным

в качестве альтернативы OnHScrollChange() и / или OnVScrollChange() типа TNotifyEvent

...