Форум - Ответы     (  К темам )
 ?  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 расцвечиваем ячейки.


support@cbuilder.ru