Я создал форму, поместил на ней компонент TTable и указал ему на таблицу EMPLOYEE.DB в базе данных DBDEMOS. Затем я разместил на форме Datasource и DBGrid, "соединил" их и получил живые данные.
Для демонстрации данной технологии я выбрал поле "номер служащего" в таблице EMPLOYEE.DB и "покрасил" ячейки с нечетными числами. То есть, если число нечетное, красим ячейку в зеленый цвет.
Единственный код расположился в обработчике события OnDrawColumnCell компонента DBGrid и выглядел он так:
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); var holdColor: TColor;begin holdColor := DBGrid1.Canvas.Brush.Color; {сохраняем оригинальный цвет}if Column.FieldName = 'EmpNo' then {"раскрашиваем" ячейки только для поляEmpNo} if (Column.Field.AsInteger mod 2 <> 0) then beginDBGrid1.Canvas.Brush.Color := clGreen;DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);DBGrid1.Canvas.Brush.Color := holdColor;end;end; |
В данном случае мы использовали метод DefaultDrawColumnCell компонента TCustomDBGrid, являющегося родителем для TDBGrid. Он раскрасил зеленым цветом нечетные ячейки поля EmpNo. [000067]
Обработайте событие OnDrawDataCell. Вот пример, который использует демонстрационную таблицу COUNTRY и рисует текст красным цветом во всех строках, содержащих страны с населением свыше 10 миллионов человек:
beginif Table1.FieldByName('Population').AsFloat < 10000000 thenDBGrid1.Canvas.Font.Color := clRed;dbGrid1.DefaultDrawDataCell(Rect,Field,State);end; |
[000403]