пятница, 31 января 2014 г.

Закрашивание ячеек StringGrid

В примере ячейки таблицы будут закрашиваться разными цветами, в зависимости от того, какие числа хранятся в них: 0 - белый, 1 - красный, 2 - желтый, 3 - зеленый.
На форме разместим компонент sg: TStringgrid и создадим обработчик события OnDrawCell
// Процедура перерисовки таблицы вызывается при любом изменении StringGrid
procedure TForm1.sgDrawCell(Sender: TObject; aCol, aRow: integer;
  aRect: TRect; aState: TGridDrawState);
begin
  sg.Canvas.Pen.Width := 0;
  sg.Canvas.Pen.Color := clWhite;
  // В зависимости от данных, хранимых в ячейках, закрашиваем их разными цветами
  if sg.Cells[aCol, aRow] = '0' then
  begin
    sg.Canvas.Brush.Color := clWhite;
    sg.Canvas.Rectangle(aRect);
    sg.Canvas.TextOut(aRect.Left + 10, aRect.Top + 4, sg.Cells[ACol, ARow]);
    sg.Canvas.Brush.Color := clWhite;
  end
  else if sg.Cells[aCol, aRow] = '1' then
  begin
    sg.Canvas.Brush.Color := clRed;
    sg.Canvas.Rectangle(aRect);
    sg.Canvas.TextOut(aRect.Left + 10, aRect.Top + 4, sg.Cells[ACol, ARow]);
    sg.Canvas.Brush.Color := clWhite;
  end
  else if sg.Cells[aCol, aRow] = '2' then
  begin
    sg.Canvas.Brush.Color := clYellow;
    sg.Canvas.Rectangle(aRect);
    sg.Canvas.TextOut(aRect.Left + 10, aRect.Top + 4, sg.Cells[ACol, ARow]);
    sg.Canvas.Brush.Color := clWhite;
  end
  else if sg.Cells[aCol, aRow] = '3' then
  begin
    sg.Canvas.Brush.Color := clGreen;
    sg.Canvas.Rectangle(aRect);
    sg.Canvas.TextOut(aRect.Left + 10, aRect.Top + 4, sg.Cells[ACol, ARow]);
    sg.Canvas.Brush.Color := clWhite;
  end
end;

Комментариев нет:

Отправить комментарий