При работе с FireMonkey в Delphi над приложениями, предназначенными для Android, iOS и Win32, пользователи могут столкнуться с проблемами при использовании компонента TVertScrollBox. Одной из таких проблем является отказ компонента скроллиться на Android, в то время как на Win32 все работает корректно. В данной статье мы рассмотрим эту проблему и предложим решение.
Описание проблемы
При использовании TVertScrollBox в приложении FireMonkey, которое должно работать на Android, iOS и Win32, пользователи могут столкнуться с ситуацией, когда компонент отказывается скроллироваться на Android. На Win32 все работает правильно: когда область компонента больше доступной области, появляется полоса прокрутки, и пользователь может осуществлять скроллинг. Однако на Android компонент просто показывает столько элементов, сколько может, и отказывается скроллироваться. Ожидаемое поведение заключается в том, что пользователь может перетаскивать точку внутри компонента, чтобы вызвать его скроллинг.
Код, вызывающий проблему
Ниже приведен код, который может вызывать данную проблему:
with TVertScrollBox.Create( Self ) do
begin
Parent := Self;
Align := TAlignLayout.alClient;
// AddObject несколько раз здесь...
UpdateStyle();
Visible := True;
end;
Подтвержденный ответ
Решением проблемы является обеспечение того, чтобы компоненты/объекты, которые вы добавляете в TVertScrollBox, были выше или больше, чем сам TVertScrollBox. Если компонент внутри TVertScrollBox меньше или короче, скроллирование не будет работать.
Ниже приведен пример кода, исправляющего проблему:
with TVertScrollBox.Create( Self ) do
begin
Parent := Self;
Align := TAlignLayout.alClient;
// AddObject несколько раз здесь...
// Попробуйте установить высоту вашего объекта равной высоте TVertScrollBox * 2
// Выровняйте ваш объект по alTop
UpdateStyle();
Visible := True;
end;
Комментарии
Пользователь может подумать, что компоненты, которые он пытается прокрутить, уже больше, чем контейнер, в котором он пытается их прокручивать. В противном случае он не ожидал бы, что они будут прокручиваться. Однако, как оказалось, проблема заключалась в том, что внутренние элементы были выровнены по центру, в результате чего их contenu
Проблемы со скроллингом TVertScrollBox в FireMonkey на Android.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS