Рисование текста в DBGrid
Falk0ner, вс, 06/07/2008 - 15:34.
Следующий метод может быть использован в качестве обработчика события 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. + 2, Field.AsString);
end;
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. + 2, Field.AsString);
end;
Взято с http://delphiworld.narod.ru
Для отображения таблицы я использую 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., Field.AsString);
end;
end;
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., Field.AsString);
end;
end;
....BTW, выключите DefaultDrawing.
Взято с http://delphiworld.narod.ru
Отправить комментарий