头痛中。。ListView1设置字体颜色后一刷新就变回去了。。。
在做一个项目,用到ListView,从文件中读取记录到ListView中,已把ListView的style设置成 vsReport 了。
要求,每条记录的颜色有该条记录本身的颜色属性决定,完全没有任何预定的格式。
比如,一条记录的颜色属性为 RGB(255,12,96)时,则该条记录的显示颜色就为RGB(255,12,96)。
现在问题来了,现已通过在ListView的OnCustomDrawItem事件中写代码实现了上面所说的功能,可是,当选择这条记录以后,该纪录原来所设定的颜色就消失了,全部恢复成为黑色,或者,将窗口最大化或最小化之后也会发生这种情况,原来每条记录所显示的颜色统统都不见了,,,
头痛阿。。。。。。
请问是不是还有什么属性没有设置清楚?或者不是在OnCustomDrawItem事件中进行处理??各位大哥请帮个忙吧。不胜感激!
ps:
添加记录的代码
TListItem* pItem;
while(i++ < RunPageSize)
{
pItem = ListView1->Items->Add();
pItem->Caption = ADOQuery1->FieldByName("产品")->AsString;
pItem->SubItems->Add(ADOQuery1->FieldByName("版权")->AsString);
pItem->SubItems->Add(ADOQuery1->FieldByName("说明")->AsString);
pItem->SubItems->Add(ADOQuery1->FieldByName("存放")->AsString);
pItem->SubItems->Add(ADOQuery1->FieldByName("时间")->AsString);
ADOQuery1->Next();
}
OnCustomDrawItem事件代码
void __fastcall TForm1::ListView1CustomDrawItem(TCustomListView *Sender,
TListItem *Item, TCustomDrawState State, bool &DefaultDraw)
{
int abc[3];//存放RGB三个值
ConvertRGB(FormatTitle(&(Item->Caption)),abc);//由Caption提取RGB颜色代码存入abc
ListView1->Canvas->Font->Color = (TColor)RGB(abc[0],abc[1],abc[2]);
if(Item->Index%2==0)
{
ListView1->Canvas->Brush->Color = (TColor)RGB(242,242,242);
}
}