C ++ Builder TStringGrid цвета строк - PullRequest
0 голосов
/ 28 июня 2019

Компонент TStringGrid, который я использую в проекте C ++ Builder, по умолчанию чередует цвета строк. Четные строки имеют серый фон, в то время как нечетные строки имеют белый фон. Как отключить эту альтернативную раскраску, чтобы все строки имели одинаковый цвет фона?

Вот как это выглядит:

enter image description here

А вот соответствующая запись в DFM:

  object StringGrid1: TStringGrid [0]
    Left = 0
    Top = 0
    Width = 744
    Height = 300
    Align = alClient
    FixedCols = 0
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clWindowText
    Font.Height = -11
    Font.Name = 'Tahoma'
    Font.Style = []
    Options = [goFixedHorzLine, goVertLine, goHorzLine, goColSizing, goRowSelect]
    ParentFont = False
    TabOrder = 0
    OnSelectCell = StringGrid1SelectCell
    ColWidths = (
      64
      64
      64
      64
      64)
  end

1 Ответ

1 голос
/ 28 июня 2019

Я не знаю, какую версию VCL вы используете, но когда-то, когда я использовал замечательный и очень полезный компонент TStringGrid, я сделал то же самое, что касается пользовательских цветных ячеек, как вы хотитеделать.Я думаю, что это изменение, связанное с поведением, не определяемое как свойство.Вам необходимо:

перегрузить виртуальную функцию TStringGrid для рисования ячеек в вашем конкретном производном классе из TStringGrid

или

в вашем экземпляре TForm, содержащем TStringGrid, который вы хотите изменить, изменитьповедение этой конкретной TStringGrid.

Итак, в основном у вас есть выбор: создать новый класс, производный от TStringGrid, и изменить поведение, переопределив функцию для рисования ячеек, или изменить существующий, конкретный экземпляр TStringGrid, переопределив только поведение этой сетки с помощью большогоObjectInspector, если он все еще называется так.

Лучше, конечно, создать новый класс и извлечь его из TStringGrid и использовать его непосредственно в Form (родительском контейнере), который вы сможете использовать позже, когда захотите, но он содержит некоторую дополнительную работу.Возможно, в качестве начальной точки лучше изменить поведение конкретного экземпляра TStringGrid, который вы уже отбросили на ParetContainer (возможно, TForm), с помощью инспектора объектов.Если вам недостаточно этих указаний, я могу разместить здесь несколько примеров кода, которые будут более полезны для вас.

...