Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/159.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ ListView列着色错误_C++_Listview_C++builder_C++builder Xe5 - Fatal编程技术网

C++ ListView列着色错误

C++ ListView列着色错误,c++,listview,c++builder,c++builder-xe5,C++,Listview,C++builder,C++builder Xe5,我想为所选列添加颜色填充 我在ListView1CustomDrawItem处理程序中执行的图形项: 如果理解正确,请在ListView1CustomDraw处理程序中绘制所选列: 结果是: 也可以在视频中看到: 正如您所看到的,当我移动时,不要在项目上单击光标,它们被错误地重新绘制。但项目必须绘制在彩色矩形列上。 如何修复此问题?您还需要处理OnCustomDrawSubItem事件。OnCustomDrawItem事件仅适用于第一列。Remy Lebeau,您有在ListView中绘制着色

我想为所选列添加颜色填充

我在ListView1CustomDrawItem处理程序中执行的图形项:

如果理解正确,请在ListView1CustomDraw处理程序中绘制所选列:

结果是:

也可以在视频中看到:

正如您所看到的,当我移动时,不要在项目上单击光标,它们被错误地重新绘制。但项目必须绘制在彩色矩形列上。
如何修复此问题?

您还需要处理OnCustomDrawSubItem事件。OnCustomDrawItem事件仅适用于第一列。

Remy Lebeau,您有在ListView中绘制着色列的源代码吗?我不明白您的要求。您已经知道如何绘制项目,只需要处理OnCustomDrawItem和OnCustomDrawSubItem事件。你还在做吗?我在OnCustomDraw子项中编写的代码不起作用。永远不会调用此事件。告诉我应该在OnCustomDrawSubItem处理程序中编写什么?也许你有一个有效的例子?
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;
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();