Рисование текста в DBGrid

Материал из DRKB

Рисование текста в DBGrid[править | править код]

Следующий метод может быть использован в качестве обработчика события TDBGrid.OnDrawDataCell. Он демонстрирует способ рисования текста в колонке цветом, отличным от цвета текста в остальной части табличной сетки.


procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect:
  TRect; Field: TField; State: TGridDrawState);
  { ПРИМЕЧАНИЕ: Свойство DefaultDrawing компонента Grid должно быть установлено в False }
begin
  { если имя поля - "NAME" }
  if Field.FieldName = 'NAME' then
    { изменяем цвет шрифта на красный }
    (Sender as TDBGrid).Canvas.Font.Color := clRed;
  { выводим текст в табличной сетке }
  (Sender as TDBGrid).Canvas.TextRect(Rect, Rect.Left + 2, Rect.Top + 2, Field.AsString);
end;


Source: Взято с http://delphiworld.narod.ru
ID: 03074



Для отображения таблицы я использую DBGrid. Для некоторых полей я хочу применить другой шрифт, размер, цвет...

Вам необходимо обработать событие OnDrawDataCell, например так:

procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const
  Rect: TRect; Field: TField; State: TGridDrawState);
begin
  if Field.FieldName = 'SERIAL' then
    if (Field as TStringField).Value = 'НЕИЗВЕСТНО' then
      with (Sender as TDBGrid).Canvas do
      begin
        Brush.Color := clRed;
        Font.Style := [fsItalic];
        Font.Color := clAqua;
        FillRect(Rect);
        TextOut(Rect.Left, Rect.Top, Field.AsString);
      end;
end;


....BTW, выключите DefaultDrawing.


Source: Взято с http://delphiworld.narod.ru
ID: 03075