Всем привет дорогие друзья. В данной статье я хотел бы Вам рассказать о том, как можно раскрасить компонент TDBGrid в различные цвета по определенному условию. То есть, раскрасить ему строки, в зависимости от того, что в TDBGrid отображается в определенном поле. Другими словами, по определенному условию.
Для примера я взял компонент не TDBGRid, а TDBGRidEh, смысл раскраски строк останется тем же. Поэтому, давайте приступать к рассмотрению нашей темы. Для этого, нам необходимо выделить наш компонент TDBGRid и перейти в Свойства данного объекта, после чего найти свойство OnDrawColumnCell и написать на него следующий код:
procedure TForm2.DBGridEh1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumnEh;
State: TGridDrawState);
var
holdColor: TColor;
begin
holdColor:=DBGridEh1.Canvas.Brush.Color;
if DBGridEh1.DataSource.DataSet.FieldByName('status').Text='Название-1' then
begin
DBGridEh1.Canvas.Brush.Color:=RGB(112,189,135);
DBGridEh1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
DBGridEh1.Canvas.Brush.Color:=holdColor;
end;
if DBGridEh1.DataSource.DataSet.FieldByName('status').Text='Название-2' then
begin
DBGridEh1.Canvas.Brush.Color:=RGB(188,189,112);
DBGridEh1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
DBGridEh1.Canvas.Brush.Color:=holdColor;
end;
if DBGridEh1.DataSource.DataSet.FieldByName('status').Text='Название-3' then
begin
DBGridEh1.Canvas.Brush.Color:=RGB(189,112,112);
DBGridEh1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
DBGridEh1.Canvas.Brush.Color:=holdColor;
end;
end;
Как видите, у меня тут строка окрашивается в определенный цвет, в зависимости от того, что в определенной ячейке записано. В итоге, у Вас должно получиться что-то типа такого:
Теперь Вы знаете, как очень легко и просто можно разукрасить ячейки компонента TDBGRid в Delphi по определенному условию.
Также советуем почитать на PressDev.RU
Короткая ссылка: http://pressdev.ru/?p=4651