Карта сайтаСсылкиКонтакты

Разноцветные строки в DBGrid

PDF Печать
Статьи

Эта статья предполагает, что Вы знаете как подключить базу данных к компоненту DBGrid. Самый легкий способ состоит в том, чтобы использовать Database Form Wizard. Выберите employee.db из DBDEMOS. Выделите все поля,кроме EmpNo.

Окрашивание столбцов

Мы сделаем это через свойство TColumns сетки. Выберите компонент сетки на форме и вызовите Columns Editor, дважды щелкнув на свойстве Columns в Инспекторе Объектов.

Теперь все, что Вы должны сделать - это определить цвет фона ячеек определенного столбца. Для цвета символов, см. свойства шрифта.

Object Inspector Editing DBGrid

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

Color DBGrid

Окрашивание строк

Если Вы хотите окрасить выбранную строку в 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 тысяч, эта строка отображается белым.

Если зарплата более 36 000

Окрашивание ячеек

И, наконец, если Вы хотите изменить цвет фона ячеек определенного столбца и цвет шрифта, Вы должны будете сделать:


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

Автор: delphi.about.com


 

Добавить комментарий


Защитный код
Обновить