C++Builder中你可以重载TStringGrid的OnDraw事件的方法,关键步骤如下:
1。覆盖Cell:StringGrid1-> Canvas-> FillRect(Rect);
2。写字符串:DrawText(StringGrid1-> Canvas-> Handle, StringGrid1-> Cells[ACol][ARow].c_str(), -1, (RECT*)&Rect, DT_SINGLELINE | DT_VCENTER | DT_CENTER);
只需要修改最后一个参数就可以实现各种文字的效果!
Example:
隔行换背景色,并把文字居中显示
void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol,
int ARow, TRect &Rect, TGridDrawState State)
{
if(ARow> 0)
{
if(ARow%2 == 0)
{
StringGrid1-> Canvas-> Brush-> Color = (TColor)0xEFE3F7;
StringGrid1-> Canvas-> FillRect(Rect);
StringGrid1-> Canvas-> Font-> Color = clBlue;
}
else
{
StringGrid1-> Canvas-> Brush-> Color = (TColor)0xF7F3FF;
StringGrid1-> Canvas-> FillRect(Rect);
}
DrawText(StringGrid1-> Canvas-> Handle, StringGrid1-> Cells[ACol][ARow].c_str(),
-1, (RECT*)&Rect, DT_SINGLELINE | DT_VCENTER | DT_CENTER);
}
}
1。覆盖Cell:StringGrid1-> Canvas-> FillRect(Rect);
2。写字符串:DrawText(StringGrid1-> Canvas-> Handle, StringGrid1-> Cells[ACol][ARow].c_str(), -1, (RECT*)&Rect, DT_SINGLELINE | DT_VCENTER | DT_CENTER);
只需要修改最后一个参数就可以实现各种文字的效果!
Example:
隔行换背景色,并把文字居中显示
void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol,
int ARow, TRect &Rect, TGridDrawState State)
{
if(ARow> 0)
{
if(ARow%2 == 0)
{
StringGrid1-> Canvas-> Brush-> Color = (TColor)0xEFE3F7;
StringGrid1-> Canvas-> FillRect(Rect);
StringGrid1-> Canvas-> Font-> Color = clBlue;
}
else
{
StringGrid1-> Canvas-> Brush-> Color = (TColor)0xF7F3FF;
StringGrid1-> Canvas-> FillRect(Rect);
}
DrawText(StringGrid1-> Canvas-> Handle, StringGrid1-> Cells[ACol][ARow].c_str(),
-1, (RECT*)&Rect, DT_SINGLELINE | DT_VCENTER | DT_CENTER);
}
}