Firemonkey ScrollBox Bug

39

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

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

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

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

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

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

  • 0
    Кстати ... Строка 19047 не отображается правильно в компоненте TGrid. Это видно только частично.
  • 0
    В некоторых системах я получаю недопустимое исключение операции с плавающей запятой при попытке использовать полосу прокрутки.
Показать ещё 4 комментария
Теги:
delphi-xe2
firemonkey

1 ответ

2

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

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

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

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню