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

 
Как в RxDBGrid выделить цветом текущую строку?, Использую Buider 4.0
Vohleb
  Отправлено: 07.04.2004, 09:07


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







Я понял что надо написать обработчик события OnGetCellParams, но не получается создать условие "ЕСЛИ СТРОКА ТЕКУЩАЯ" sad.gif
** Павел
Отправлено: 07.04.2004, 11:25


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







Если именно текущую — можно обойтись и просто задав
в RxDBGrid1->Options->dgRowSelect = true;
текущая строка всегда будет синим цветом.

Vohleb
Отправлено: 07.04.2004, 11:33


Ученик-кочегар

Группа: Участник
Сообщений: 4



Павел
Не годится, нужно при этом иметь возможность редактировать ячейку.

Отредактировано Vohleb — 07/04/2004, 12:36
olegenty
Отправлено: 07.04.2004, 12:24


Ветеран

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



Событие
OnDrawColumnCell обработать надо.
в нём проверить по ключу, является ли текущее значение поля тем, в котором находится курсор, и если да, прорисовать с другим цветом фона:
CODE

void __fastcall Tfm::RxDBGrid1DrawColumnCell(
     TObject *Sender, const TRect &Rect, int DataCol, TColumn *Column,
     TGridDrawState State)
{
   if (условие)
   {
       RxDBGrid1->Canvas->Brush->Color = твой_цвет;
   }
}


как ты будешь определять, что прорисовывается именно нужная строка — думай сам...
olegenty
Отправлено: 07.04.2004, 12:27


Ветеран

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



забыл, в конце обработки события безусловно должно быть следующее:
CODE

   RxDBGrid1->DefaultDrawColumnCell(Rect, DataCol, Column, State);
Vohleb
Отправлено: 07.04.2004, 13:41


Ученик-кочегар

Группа: Участник
Сообщений: 4



Вопрос в том как написать проверку "если строка текущая, то ..."
olegenty
Отправлено: 07.04.2004, 15:35


Ветеран

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



Например через ActiveRecord твоего наследника TDataSet

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