Разноцветные строки в 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 тысяч, эта ячейка отображается черным, а цвет шрифта белым.
Комментарии