Если надо сменить цвет текста, то делается примерно так (вешать на OnDrawCell):
| Код | var HighlightCol : integer; ... procedure TForm1.sg1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); begin with sg1 do begin if ACol = HighlightCol then Canvas.Font.Color := clRed else Canvas.Font.Color := Font.Color; // или else exit; Canvas.TextRect(Rect, Rect.Left+2, Rect.Top+2, Cells[ACol, ARow]); end; end; |
sg1 - TStringGrid; sg1.DefaultDrawing := true должно быть (вначале рисуется ячейка полностью по дефолту, а потом поверх нарисованного рисуется текст другим цветом). В переменной HighlightCol хранится № подсвечиваемого столбца. Если ты меняешь эту переменную, то после этого делай sg1.Repaint или sg1.Refresh, чтобы обновить окошко.
Если же тебе надо подсветку делать сменой цвета фона ячеек, то тут сложнее будет: DefaultDrawing := false, и в OnDrawCell отрисовывать ячейку полностью вручную - фон, учитываеть фокус, выделение, писать текст... |