StringGrid1->Options << goRowSelect;
не спасёт отца русской демократии? (с)
VerZer - нет. При таком подходе нельзя "бегать" по ячейкам таблицы, выделяется сразу вся строка.
Нашел другой способ.
void __fastcall TForm1::StringGrid1SelectCell(TObject *Sender, int ACol,
int ARow, bool &CanSelect)
{
StringGrid1->Invalidate();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol, int ARow,
TRect &Rect, TGridDrawState State)
{
if(ARow == StringGrid1->Row)
{
StringGrid1->Canvas->Brush->Color = clYellow;
StringGrid1->Canvas->FillRect(Rect);
StringGrid1->Canvas->TextRect(Rect, Rect.Left + 2, Rect.Top + 2,
StringGrid1->Cells[ACol][ARow]);
}
}
Только вот при таком методе подсветки строки, текст в ячейках нулевого столбца все время затирается.
Это наверное связано с тем, что метод перерисовки Invalidate() для StringGrid'а вызывается в свойстве onSelectCell, поэтому когда "побегаешь" по остальным ячейкам таблицы, тест в ячейках нулевого столбца тоже видно.
Или просто C++ Builder пытается выделить синим ячейку!?
Как можно это исправить!? Что - бы строка подсвечивалась как нужно и был виден текст в ячейках.