怎样更改StringGrid中某一个单元格的字体属性?

crysword 2003-10-20 10:40:47
RT
...全文
140 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
crysword 2003-11-13
  • 打赏
  • 举报
回复
UP@@@####
niuzhenjun 2003-10-21
  • 打赏
  • 举报
回复
那恐怕不行,你用vb的ocx控件吧。
crysword 2003-10-21
  • 打赏
  • 举报
回复
这种方法我也试过,不过我的结果是变过去的字体就不能再恢复了。
而我的目的是通过鼠标的点击改变字体的属性,而点击别的单元格,现在的单元格字体恢复。
niuzhenjun 2003-10-20
  • 打赏
  • 举报
回复
当然可以了,以前的收藏,改一改就可以
C++Builder中你可以重载TStringGrid的OnDraw事件的方法,关键步骤如下:

1。覆盖Cell:sgrid->Canvas->FillRect(Rect);(sgrid是控件的名称)
2。写字符串:DrawText(sgrid->Canvas->Handle,sgrid->Cells[ACol][ARow].c_str(),-1,(RECT*)&Rect, DT_SINGLELINE | DT_VCENTER |DT_CENTER); 只需要修改最后一个参数就可以实现各种文字的效果!
---------------------------------------------------------------
Example:

隔行换背景色,并把文字居中显示
void __fastcall TfmIn::sgridDrawCell(TObject *Sender, int ACol, int ARow,
TRect &Rect, TGridDrawState State)
{
if( ARow>0)
{
if(ARow%2 == 0 )
{
sgrid->Canvas->Brush->Color=(TColor)0xEFE3F7;
sgrid->Canvas->FillRect(Rect);
//sgrid->Canvas->Font->Color = clBlue;
}
else
{
sgrid->Canvas->Brush->Color=(TColor)0xF7F3FF;
sgrid->Canvas->FillRect(Rect);
}
DrawText(sgrid->Canvas->Handle,sgrid->Cells[ACol][ARow].c_str(),-1,(RECT*)&Rect,
DT_SINGLELINE | DT_VCENTER |DT_CENTER);
}
}
你查一下canvas的font属性就可以了
albeta 2003-10-20
  • 打赏
  • 举报
回复
这个控件没办法,网络上有很多从这个控件继承下来的控件,可以实现这个。
Cocoky 2003-10-20
  • 打赏
  • 举报
回复
同意
yufei_yf 2003-10-20
  • 打赏
  • 举报
回复
同意 niuzhenjun(还得学呀)

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧