Форум — Ответы ( К темам )
? | Alex: Разноцветные строки в DBGrid`е (19-02-2003 16:04:43) |
Как сделать разноцветные строки в Grid, в зависимости от значения к некотром поле? | |
Георгий (19-02-2003 16:56:50) | |
Можно включить режим ручного рисования: написать обработчик события OnDrawDataCell и в нём нарисовать ячейку (квадратик нужного цвета с нужным текстом внутри). Я так делал для обычного TStringGrid, но и для DBGrid должно работать. | |
Владимир (19-02-2003 20:21:51) | |
Обычно это делают в обработчике события DrawColumnCell Например (пример из книги, чуть переделанный) /////////////////////////////////////// // DBGrid1DrawColumnCell // Paints ROW different color depending on value of ItemsTotal field /////////////////////////////////////// void __fastcall TForm1::DBGrid1DrawColumnCell(TObject *Sender, const TRect &Rect, Integer DataCol, TColumn *Column, TGridDrawState State) { if(ColorRows1->Checked) { if (Table1ItemsTotal->Value < 1000){ DBGrid1->Canvas->Font->Color = clRed; // цвет текста DBGrid1->Canvas->Color = clInfoBk; // цвет фона } else if (Table1ItemsTotal->Value < 10000){ DBGrid1->Canvas->Font->Color = clBlue; DBGrid1->Canvas->Color = clYellow; } else DBGrid1->Canvas->Font->Color = clGreen; } DBGrid1->DefaultDrawColumnCell(Rect, DataCol, Column, State); } пояснения: ColorRows1 — это может быть CheckBox, если галочка стоит, то расцвечиваем Grid Table1ItemsTotal — некое цифровое поле ItemsTotal таблицы Table1, связанной с компонентой DBGrid1. В зависимости от значения Table1ItemsTotal расцвечиваем ячейки. |