Guest |
Отправлено: 09.04.2004, 08:32 |
|
Не зарегистрирован
|
Привет. Есть DBGrid. При определенных условиях в обработчике OnDrawColumnCell я изменяю цвет строки. Выглядит сие подобным образом:
CODE |
void __fastcall TPacts::DBGridDrawColumnCell(TObject *Sender,
const TRect &Rect, int DataCol, TColumn *Column,
TGridDrawState State)
{
if(ADOSP->Fields->FieldByName(_Date)->AsDateTime == Date())
{ DBGrid->Canvas->Brush->Color=clGreen;
DBGrid->Canvas->Font->Color=clWhite;
DBGrid->Canvas->FillRect(Rect);
DBGrid->Canvas->TextOut(Rect.Left+2,Rect.Top+2,Column->Field->Text);
}
}
|
Проблема в том, что при попадании курсора на запись выделенную этим цветом, самого курсора не видно?! Как сделать так, чтобы все-таки курсор видно было, когда он ходит по таким записям? |
|
olegenty |
Отправлено: 09.04.2004, 08:59 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
попробуй вот так:
CODE |
void __fastcall TPacts::DBGridDrawColumnCell(TObject *Sender,
const TRect &Rect, int DataCol, TColumn *Column,
TGridDrawState State)
{
if(ADOSP->Fields->FieldByName(_Date)->AsDateTime == Date())
{
DBGrid->Canvas->Brush->Color=clGreen;
DBGrid->Canvas->Font->Color=clWhite;
}
DBGrid->DefaultDrawColumnCell(Rect, DataCol, Column, State);
}
|
|
|
Guest |
Отправлено: 09.04.2004, 09:54 |
|
Не зарегистрирован
|
Не-а, и так не помогает
Все равно выделенная строка перекрывает своим цветом курсор
Есть еще идеи? |
|
olegenty |
Отправлено: 09.04.2004, 10:28 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
это не идея была... у меня всё корректно работает...
|
|
Guest |
Отправлено: 09.04.2004, 13:44 |
|
Не зарегистрирован
|
Пишу в точности так:
CODE |
void __fastcall TPacts::DBGridDrawColumnCell(TObject *Sender,
const TRect &Rect, int DataCol, TColumn *Column,
TGridDrawState State)
{
if(ADOSP->Fields->FieldByName(_Date)->AsDateTime == Date())
{
DBGrid->Canvas->Brush->Color=clGreen;
DBGrid->Canvas->Font->Color=clWhite;
}
DBGrid->DefaultDrawColumnCell(Rect, DataCol, Column, State);
}
|
Результат тот же, что и прежде был |
|
olegenty |
Отправлено: 10.04.2004, 07:08 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
А совсем правильно будет вот так:
CODE |
void __fastcall TPacts::DBGridDrawColumnCell(TObject *Sender,
const TRect &Rect, int DataCol, TColumn *Column,
TGridDrawState State)
{
if(ADOSP->Fields->FieldByName(_Date)->AsDateTime == Date())
{
if (!State.Contains(gdSelected) && !State.Contains(gdFocused))
{
DBGrid->Canvas->Brush->Color=clGreen;
DBGrid->Canvas->Font->Color=clWhite;
}
}
DBGrid->DefaultDrawColumnCell(Rect, DataCol, Column, State);
}
|
Я цвет-то не менял, только шрифт...
|
|
Guest |
Отправлено: 13.04.2004, 13:54 |
|
Не зарегистрирован
|
БОЛЬШОЕ СПАСИБО olegenty |
|
olegenty |
Отправлено: 13.04.2004, 14:11 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
пожалуйста
|
|