如何根据DBgrid的某一列字符条件,将字符颜色改变?

stbigcrab 2006-12-20 11:17:38
void __fastcall T_Test::DBGridEh1DrawColumnCell(TObject *Sender,
const TRect &Rect, int DataCol, TColumnEh *Column,
TGridDrawState State)
{


if (State.Contains(gdSelected))
{
return;
}

if( (ADO_Test->FieldByName("状态"))->AsString =="是" )
{

DBGridEh1->Columns->Items[5]->Font->Color=clSkyBlue;
}
else if((ADO_Test->FieldByName("状态"))->AsString =="否" )
{

DBGridEh1->Columns->Items[5]->Font->Color=clMaroon;
}
DBGridEh1->DefaultDrawColumnCell(Rect,DataCol,Column,State);


}

测试了上面那段代码,可以得到我要的效果,可是文字老是闪烁
DBGridEh1->DoubleBuffered=true;后
闪烁效果消失,但换来程序缓慢到极点.
请问各位前辈有没有更有效率做法?
受教了!!
...全文
166 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
stbigcrab 2006-12-21
  • 打赏
  • 举报
回复
牛!
问题解决!
yi10000 2006-12-21
  • 打赏
  • 举报
回复
可以在优化:
if((Column->Index==5) && (DBGridEh1->Canvas->Font->color != ) )
DBGridEh1->Canvas->Font->color=
颜色已经是对的不要再赋值了
netsys2 2006-12-21
  • 打赏
  • 举报
回复
把 DBGridEh1->Columns->Items[5]->Font->Color=

修改为
if(Column->Index==5)
DBGridEh1->Canvas->Font->color=

1,178

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 数据库及相关技术
社区管理员
  • 数据库及相关技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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