Показать сообщение отдельно
  #2  
Старый 17.03.2022, 01:40
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,004
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Если мне не изменяет память, то без ковыряния в самом компоненте - никак. Эта область есть окно компонента, а у тебя есть только обработчик отрисовки ячейки. Можно попробовать поставить св-во Color, если оно есть, у компонента, но, во первых, это поменяет также и цвет фона ячеек (что можно перекрыть уже отрисовкой самих ячеек), а во вторых, оно, скорее всего, не будет работать при использовании тем (поведение по умолчанию и что-то мне подсказывает, что темы ты отключать не хочешь).

Да, можно не создавать свой компонент полностью, а обойтись простой заглушкой. Сотственно, тут надо перекрыть либо метод EraseBackground, либо Paint, если первого метода нет или он недоступен. А что бы не создавать и не регистрировать свой компонент можно воспользоваться таким трюком:
Код:
unit Unit1;
...
type
  TStringGrid = class(StrGrd.TStringGrid)
  ...
  procedure EraseBackground; override;
  ...
  end;

  TForm1 = class(TForm)
  ...
  StringGrid1 : TStringGrid;
  ...
  end;
...
В этом случае сама Delphi будет работать со стандартным компонентом, а во время исполнения программы будет использоваться твоя версия с перекрытыми методами.

ЗЫ. Имя модуля, где описан исходный TStringGrid, и имя метода написал по памяти, надо проверить точные имена.
Ответить с цитированием