首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

ListView行颜色的有关问题

2012-02-04 
ListView行颜色的问题从网上找到在ListView的CustomDrawItem中可以改变ListView的颜色的代码,如下运行时可

ListView行颜色的问题
从网上找到在ListView的CustomDrawItem中可以改变ListView的颜色的代码,如下运行时可以,但是发现最小化窗口再恢复窗口时全部行都变成红色了,而且如果前面有其他窗口遮盖过,则这部分颜色又变黑色了,请问这个问题该如何解决?

void __fastcall TFrmCalib::ListView1CustomDrawItem(TCustomListView *Sender,
  TListItem *Item, TCustomDrawState State, bool &DefaultDraw)
{
  TListView *lv=(TListView*)Sender;

  if (bEnter[0] && bEnter[1]) //正在采集时字体显示红色
  lv->Canvas->Font->Color=clRed;
  else
  lv->Canvas->Font->Color=clBlack;

}

[解决办法]
Canvas->Font->Color是用于设置canvas的颜色,当你执行刷新操作(最小化...)时,ListView里面Items的颜色当然改变了,不是clRed就是clBlack,这要看你的Items有没有>2了

C/C++ code
void __fastcall TFrmCalib::ListView1CustomDrawItem(TCustomListView *Sender,TListItem *Item, TCustomDrawState State, bool &DefaultDraw){TRect rect=TRect(0,0,ListView1->Width,ListView1->Height);if (bEnter[0] && bEnter[1]) //正在采集时字体显示红色{ Canvas->Font->Color = clRed;//设置成红色字体Canvas->TextOutA(...);//你可以参考帮助文档,来设置TextOutA的输出格式,字体和颜色Canvas->Font->Color = clBlack;//还原成黑色}else{Canvas->TextOutA(...);//同上} if(State.Contains(odFocused)) // 擦除原先的焦点虚框{::DrawFocusRect(Canvas->Handle, &Rect);} 

热点排行