Разноцветные строки в DBGrid
Окрашивание столбцов
Мы сделаем это через свойство TColumns сетки. Выберите компонент сетки на форме и вызовите Columns Editor, дважды щелкнув на свойстве Columns в Инспекторе Объектов.
Теперь все, что Вы должны сделать - это определить цвет фона ячеек определенного столбца. Для цвета символов, см. свойства шрифта.

Это все можно сделать за несколько щелчков. Это, конечно, лучше стандартной черно-белой сетки (если это, конечно, нужно).

Окрашивание строк
Если Вы хотите окрасить выбранную строку в DBGrid, но не хотите использовать опцию dgRowSelect, потому что хотите редактировать данные, Вы должны использовать событие DBGrid.OnDrawColumnCell.
Этот пример демонстрирует, как динамически изменить цвет текста в DBGrid.
procedure TForm1.DBGrid1DrawColumnCell
(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
if Table1.FieldByName('Salary').AsCurrency > 36000 then
DBGrid1.Canvas.Font.Color:= clMaroon;
DBGrid1.DefaultDrawColumnCell
(Rect, DataCol, Column, State);
end;
Если зарплата служащего более 36 тысяч, ее строка отображается бордовым цветом.
Следующий пример показывает, как динамически изменить цвет строки в DBGrid
procedure TForm1.DBGrid1DrawColumnCell
(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
if Table1.FieldByName('Salary').AsCurrency > 36000 then
DBGrid1.Canvas.Brush.Color:= clWhite;
DBGrid1.DefaultDrawColumnCell
(Rect, DataCol, Column, State);
end;
Если зарплата служащего более 36 тысяч, эта строка отображается белым.

Окрашивание ячеек
И, наконец, если Вы хотите изменить цвет фона ячеек определенного столбца и цвет шрифта, Вы должны будете сделать:
procedure TForm1.DBGrid1DrawColumnCell
(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
if Table1.FieldByName('Salary').AsCurrency > 40000 then
begin
DBGrid1.Canvas.Font.Color:= clWhite;
DBGrid1.Canvas.Brush.Color:= clBlack;
end;
if DataCol = 4 then //четвертый столбец в 'Salary'
DBGrid1.DefaultDrawColumnCell
(Rect, DataCol, Column, State);
end;
Если зарплата служащего более 40 тысяч, эта ячейка отображается черным, а цвет шрифта белым.
Комментарии