====== Цветные ячейки в StringGrid и DBGrid ======
Автор: //Марина Прядко//
===== Цветной StringGrid =====
Будем обрабатывать событие OnDrawCell. Фон всех ячеек будет красным, а ячеек во втором стобце - синим.
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
const //здесь определяем Ваш цвет.
ColorBlue = TColor($FFCCCC);
ColorRed = 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 := ColorBlue
else
StringGrid1.canvas.brush.Color := ColorRed;
//Теперь закрасим ячейки, но только, если ячейка не TitleRow/TitleColumn
if (ACol > 0) and (ARow > 0) then
begin
//Закрашиваем фон
StringGrid1.Canvas.FillRect(Rect);
//Выводим текст
StringGrid1.Canvas.TextOut(Rect.Left, Rect.Top, StringGrid1.Cells[ACol, ARow]);
end;
end;
===== Цветной DBGrid=====
Теперь раскрасим DBGrid.
Раскрасим строки с записями о сотрудниках, работающих в Департаменте1, красным цветом, а остальные - синим.
Будем обрабатывать событие OnDrawColumnCell
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
const
ColorBlue = TColor($FFCCCC);
ColorRed = TColor($CCCCFF);
begin
//Если ячейка имеет фокус, то она закрашивается черным
if (gdFocused in State) then
DBGrid1.Canvas.Brush.Color := clBlack
else
//Если сотрудник работает в Департаменте1, то устанавливаем красный цвет, иначе - синий
if trim(Column.Field.Dataset.FieldByName('department').AsString) = 'Департамент1' then
DBGrid1.Canvas.Brush.Color := ColorRed
else
DBGrid1.Canvas.Brush.Color := ColorBlue;
//И закрашиваем ячейку
DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State)
end;