读书人

ListView行颜色的有关问题

发布时间: 2012-02-04 15:43:08 作者: rapoo

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);} 

读书人网 >C++ Builder

热点推荐