link8378 link8379 link8380 link8381 link8382 link8383 link8384 link8385 link8386 link8387 link8388 link8389 link8390 link8391 link8392 link8393 link8394 link8395 link8396 link8397 link8398 link8399 link8400 link8401 link8402 link8403 link8404 link8405 link8406 link8407 link8408 link8409 link8410 link8411 link8412 link8413 link8414 link8415 link8416 link8417 link8418 link8419 link8420 link8421 link8422 link8423 link8424 link8425 link8426 link8427 link8428 link8429 link8430 link8431 link8432 link8433 link8434 link8435 link8436 link8437 link8438 link8439 link8440 link8441 link8442 link8443 link8444 link8445 link8446 link8447 link8448 link8449 link8450 link8451 link8452 link8453 link8454 link8455 link8456 link8457 link8458 link8459 link8460 link8461 link8462 link8463 link8464 link8465 link8466 link8467 link8468 link8469 link8470 link8471 link8472 link8473 link8474 link8475 link8476 link8477 link8478 link8479 link8480 link8481 link8482 link8483 link8484 link8485 link8486 link8487 link8488 link8489 link8490 link8491 link8492 link8493 link8494 link8495 link8496 link8497 link8498 link8499 link8500 link8501 link8502 link8503 link8504 link8505 link8506 link8507 link8508 link8509 link8510 link8511 link8512 link8513 link8514 link8515 link8516 link8517 link8518 link8519

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