Для раскрашивания будем использовать событие «OnDrawCell». Следующий код показывает, как сделать в Grid красный бэкраунд. Бэкграунд второй колонки будет зелёным.
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
Const // сдесь определяем Ваш цвет. Так же можно использовать
// цвета по умолчанию.
clPaleGreen = TColor($CCFFCC);
clPaleRed = TColor($CCCCFF);
begin
// Если ячейка получает фокус, то нам надо закрасить её другими цветами
if (gdFocused in State) then
begin
StringGrid1.Canvas.Brush.Color := clBlack;
StringGrid1.Canvas.Font.Color := clWhite;
end
else // Если же ячейка теряет фокус, то закрашиваем её красным и зелёным
if ACol = 2 // Вторая колонка будет зелёной , другие - ячейки красными
then
StringGrid1.Canvas.Brush.Color := clPaleGreen
else
StringGrid1.Canvas.Brush.Color := clPaleRed;
// Теперь закрасим ячейки, но только, если ячейка не Title- Row/Column
// Естевственно это завит от того, есть у Вас title-Row/Columns или нет.
If (ACol > 0) and (ARow > 0) then
begin
// Закрашиваем бэкграунд
StringGrid1.Canvas.fillRect(Rect);
// Закрашиваем текст (Text). Также здесь можно добавить выравнивание и т.д..
StringGrid1.Canvas.TextOut(Rect.Left, Rect.Top,
StringGrid1.Cells[ACol, ARow]);
end;
end;