我想为选定的列添加颜色填充。
我在ListView1CustomDrawItem
处理程序中绘制的项目:
Sender->Canvas->Brush->Color = RGB(200, 200, 255);
if(Item->Selected)
{
Sender->Canvas->Brush->Color = (Sender->Focused() ? clBlue : clRed);
}
Sender->Canvas->Lock();
Sender->Canvas->FillRect(Item->DisplayRect(drBounds));
Sender->Canvas->TextOut(Item->DisplayRect(drLabel).Left, Item->DisplayRect(drLabel).Top + 1, Item->Caption);
Sender->Canvas->Unlock();
DefaultDraw = false;
如果我理解正确,我应该在ListView1CustomDraw
处理程序中绘制选定的列:
TRect rect;
rect = ARect;
rect.Right = Sender->Column[0]->Width;
Sender->Canvas->Brush->Color = RGB(245, 245, 245);
Sender->Canvas->Lock();
Sender->Canvas->FillRect(rect);
Sender->Canvas->Unlock();
结果是:
http://i63.fastpic.ru/big/2014/1120/ba/e5b6d30eb9e05bbe3661aed295c28aba.jpg
也可以在视频中看到:http: //youtu.be/XGXpWCUtGbU
如您所见,当我将光标移动(不要单击)项目上时,它们会被错误地重绘。但是项目必须绘制在列彩色矩形上。我怎样才能解决这个问题?