This article has been dead for over three months
You
void __fastcall TForm1::GridDrawCell(TObject *Sender, int ACol,
int ARow, TRect &Rect, TGridDrawState State)
{
//Affects the fixed cells - should there be any
if (State.Contains(gdFixed))
{
StringGrid70->Canvas->Brush->Color = clBtnShadow; //background
StringGrid70->Canvas->Font->Color = clWhite; //text
}
else
//the currently selected cell is green
//change this to the same colour as the background in order
//to "hide" the selected cell
if (State.Contains(gdSelected))
{
Form1->StringGrid70->Canvas->Brush->Color = clGreen;
Form1->StringGrid70->Canvas->Font->Color = clBlack;
}
else
//turns cell[2][2] yellow
if (ARow == 2 && ACol == 2)
{
StringGrid70->Canvas->Brush->Color = clYellow;
StringGrid70->Canvas->Font->Color = clWhite;
}
else
//turns rows 7 & 8 silver - but not the fixed cells
if ((ARow == 7 || ARow == 8) && !State.Contains(gdFixed))
{
StringGrid70->Canvas->Brush->Color = clSilver;
StringGrid70->Canvas->Font->Color = clWhite;
}
else
//if the cell contains an "a" anywhere then the text is bold & struck through
if (StringGrid70->Cells[ACol][ARow].AnsiPos("a") != 0 && !State.Contains(gdFixed))
{
StringGrid70->Canvas->Font->Style = TFontStyles() << fsBold << fsStrikeOut;
StringGrid70->Canvas->Font->Color = clBlack;
}
// Fills the cells
StringGrid70->Canvas->FillRect(Rect);
// A neat trick for text alignment
int hAlign; // text align, 0/1/2 - Left/Center/Right
if (ACol % 2)
hAlign = 1;
else
hAlign = 2;
// and now put everything in the cells
DrawText(StringGrid70->Canvas->Handle, StringGrid70->Cells[ACol][ARow].c_str(),
-1, &Rect, DT_SINGLELINE | DT_VCENTER | hAlign);
}