Подтвердить что ты не робот

Ошибка ScrollBox Firemonkey

Мы сталкиваемся с тем, что кажется странной ошибкой в ​​компоненте ScramBox Firemonkey (поскольку TGrid наследует от TScrollBox, он также влияет на все сетки). На некоторых наших машинах разработки все работает нормально, а на других - ошибка. Нам не удалось обнаружить какой-либо шаблон между системами (мы проверили ОС, графическое оборудование, версию DirectX).

Размножение:

  • Создайте новое приложение FireMonkey. Поместите a TScrollBox в форму.
  • Добавьте кнопку в scrollBox и установите ее вертикальное положение на 500000.
  • Запустите приложение и проверьте, отображается ли кнопка при прокрутке до конца прокрутки.

Если ошибка возникает, кнопка не отображается.

При использовании сетки это приводит к тому, что строки 1-19047 отображаются правильно, а все строки от 19047 и выше не отображаются.

Кто-нибудь может понять, что может быть причиной этого? Или любая идея, как мы можем определить проблему более подробно?

4b9b3361

Ответ 1

После всех проблем со скроллированием я пришел к выводу, что существует проблема инициализации с прокруткой компонентов в firemonkey, которая проявляется в изворотливом прокрутке. Иногда это будет работать, и иногда это не будет...

После того, как я подумал, что я исправил проблему несколько раз, только для того, чтобы увидеть, как проблема снова появляется при последующем компиляции (или в другой ОС), я имел большой успех при вызове метода UpdateStyle компонента после добавления всех дочерних компонентов. То есть проблема не возникла после добавления вызова...

например. Следующий псевдо-код заполняет компонент прокрутки, а затем вызывает UpdateStyle, который, похоже, заставляет компонент "исправлять" недопустимые настройки для различных свойств - Min, Max и т.д.

for i := 1 to x do
  MyScrollComponent.AddObject(MyObject[i]);
MyScrollComponent.UpdateStyle;

Надеюсь, это сработает и для вас...