Цветные ячейки в StringGrid — Delphi(Делфи)

Для раскрашивания будем использовать событие «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;

Leave a Comment