Цветные ячейки в 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;
 
faq/delphi/ui/color_cells.txt · Последние изменения: 2006/06/16 10:29 От seagirl
 
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki