Firemonkey ScrollBox Bug - PullRequest
       9

Firemonkey ScrollBox Bug

39 голосов
/ 20 сентября 2011

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

Воспроизведение:

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

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

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

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

1 Ответ

2 голосов
/ 24 ноября 2011

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

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

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

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

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

...