C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
DBGrid trouble!, Помогите плиз!
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


Не зарегистрирован







Не-а, и так не помогает sad.gif
Все равно выделенная строка перекрывает своим цветом курсор sad.gif
Есть еще идеи?
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);
}


Результат тот же, что и прежде был sad.gif
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);
}



Я цвет-то не менял, только шрифт... biggrin.gif
Guest
Отправлено: 13.04.2004, 13:54


Не зарегистрирован







БОЛЬШОЕ СПАСИБО olegenty
olegenty
Отправлено: 13.04.2004, 14:11


Ветеран

Группа: Модератор
Сообщений: 2412



пожалуйста smile.gif

Вернуться в Работа с базами данных в C++Builder