Как изменить цвет определённой ячейки в TStringGrid.
Компилятор: C++ Builder
Установите свойство DefaultDrawing в false, а затем в
обработчик события OnDrawCell добавьте следующий код:
void __fastcall
TForm1::StringGrid1DrawCell(TObject *Sender,
int Col, int Row, TRect &Rect,
TGridDrawState State)
{
// Если это заголовок
if (State.Contains(gdFixed))
{
StringGrid1->Canvas->Brush->Color
= clBtnFace;
StringGrid1->Canvas->Font->Color
= clWindowText;
StringGrid1->Canvas->FillRect(Rect);
Frame3D(StringGrid1->Canvas,
Rect,
clBtnHighlight,
clBtnShadow, 1);
}
// если ячейка выделена
else if (State.Contains(gdSelected))
{
StringGrid1->Canvas->Brush->Color
= clHighlight;
StringGrid1->Canvas->Font->Color
= clHighlightText;
StringGrid1->Canvas->FillRect(Rect);
}
// закрашиваем ячейку (2, 2)
else if (Col == 2 && Row ==
2)
{
StringGrid1->Canvas->Brush->Color
= clBlue;
StringGrid1->Canvas->Font->Color
= clRed;
StringGrid1->Canvas->FillRect(Rect);
}
// Для всех остальных
ячеек
else
{
StringGrid1->Canvas->Brush->Color
= StringGrid1->Color;
StringGrid1->Canvas->Font->Color
= StringGrid1->Font->Color;
StringGrid1->Canvas->FillRect(Rect);
}
AnsiString text = StringGrid1->Cells[Col][Row];
StringGrid1->Canvas->TextRect(Rect,
Rect.Left, Rect.Top, text);
}
|