| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C++ Builder > Сетка DBGrid |
| Автор: ura5 4.5.2007, 10:53 |
| Это сетка,чередуются зелениые и голубые полосы(строки). Проблема: 1.Как сделать,чтобы при перемещении фокуса (прокрутка) по таблице не менялся цвет строк (бывает,что все строки окрашиваются то в зеленый,то в голубой цвет при прокрутке). 2.Как окрасить фокус в определенный цвет. Спасибо. ********************* void __fastcall TTel1::DBGrid1DrawColumnCell(TObject *Sender, const TRect &Rect, int DataCol, TColumn *Column, TGridDrawState State) { // ЗЕБРА static TColor ColCol=clSkyBlue; if (DataCol == 0) { if (ColCol == clSkyBlue) ColCol=clMoneyGreen; else ColCol=clSkyBlue; } DBGrid1->Canvas->Brush->Color=ColCol; DBGrid1->Canvas->FillRect(Rect); DBGrid1->DefaultDrawColumnCell(Rect,DataCol,Column,State); } ******************** |
| Автор: _hunter 4.5.2007, 11:09 |
| во-первых: нужно привязываться не к предыдущему цвету а к номеру текущей строки: если он четный -- рисуй одним цветом, иначе другим... во-вторых: нужно отключить стандартную отрисовку ячек. ну и тут: http://www.delphikingdom.com/asp/answer.asp?IDAnswer=30485 пара примеров... |
| Автор: Rodman 4.5.2007, 12:20 | ||
|
| Автор: ura5 4.5.2007, 13:55 |
| Неверно.Окрашивается только 1-й столбец в зеленый цвет,а остальные -голубые.Мне надо,чтобы зебра(которая была раньше ) оставалась на месте т.е. не изменялась при движении курсора. |