2015-07-13 3 views
3

После нескольких часов я не смог найти ссылку на эту проблему здесь или в другом месте. Проблема проявляется в приложениях с несколькими устройствами (следовательно, FMX не VCL), как для Android, так и для Windows (я не могу знать для iOS).Как сделать обновление сетки на горизонтальном прокрутке

установки параметров: Поместите сетку (TGrid или TStringGrid) на форме. Сделайте сетку большим, чем форма, добавив столбцы, чтобы обеспечить горизонтальную прокрутку. В настройках сетки выберите нарисовать ColLines, RowLines и AlternatingRowBackground. RowSelect также может быть правдой, чтобы выделить всю строку сразу.

Проблема: При прокрутке по горизонтали, ранее скрытая часть сетки не показывает RowLines или фона (ColLines хорошо нарисованные), или выделить из RowSelect. Раскраска и рисунок разрезаются независимо от пределов столбцов. При изменении размера окна в соответствии с сеткой (в ОС Windows) цвета и линии хорошо нарисованы на ранее скрытых столбцах.

Я попытался, как для OnDrawColumnCell и OnHScrollChange событий:

  • StringGrid.Repaint, Self.Invalidate: нет результата
  • Application.HandleMessage, Application.ProcessMessages: замедлить АРР,
  • StringGrid.Canvas.Clear(0): замедлить и испортить приложение
  • Изменение между версиями Debug и Release: нет результата
  • Изменение Grid.Align Клиенту, Нет, Подходит, Содержание, Масштаб: нет результата

Пожалуйста, кто-нибудь знает способ сделать отображение сетки, как ожидается, при прокрутке по горизонтали?


Редактировать 12-Август-2016: Delphi 10,1 (Берлин) не касается

+0

какая версия Delphi вы используете? У меня такая же проблема с Delphi XE7 Update 1 и Delphi XE8. – Zam

+0

Я использую обновление Delphi XE7 1. Я редактировал свой пост. –

+0

Я добавил соответствующий тег для вас :) – whosrdaddy

ответ

1

Ok я нашел его. В конце концов.

Чтобы подсветка отображалась по всему ряду при ее выборе (даже скрытая часть), нужно играть с Стили.

я не углублялся в редактировании стиля, но вот на что посмотреть:

  • с компонентом сетки (TGrid, TStringGrid) на форме, щелкните правой кнопкой мыши на сетке и выберите Изменить стиль по умолчанию или Edit Custom Style открыть стиль дизайнера окно FireMonkey (см DocWiki подробности)
  • в Structure View перейти к: gridstyle > background > content > selection
  • В инспекторе объектов, то Align свойство для selection является None по умолчанию: , поэтому подсветка не распространяется на всю строку!
  • Измените значение на Horizontal, и все готово. Другие значения не будут делать трюк. (Contents, Client: выделена вся сетка) (Fit, Center: выделение центрировано на сетке)

Удивительно, но в Delphi 10.1, конфигурация по умолчанию является таким же, но выбор правильно распределить по всей строке, если это необходимо ...

Примечание: gridstyle - TLayout; background - TRectangle; content - TLayout; selectionTRectangle

Смежные вопросы