我有一些动态创建的列表视图组件,其中包含数十个项目和超过 24 列。
onCustomdrawXXX
当我在事件或列表视图的事件中设置一些画布属性(例如,brush.color)时onAdvancedCustomDrawXXX
,应用程序变得不稳定并崩溃。
首先,开始出现一些视觉故障(标题未绘制,列表视图中的伪影),然后应用程序无响应并崩溃。
我也能够通过设计时创建的列表视图重现该问题。
我已阅读此内容,但我不想拥有控件。
有人可以帮我解决这个问题吗?
更新:代码
procedure TMainForm.listview1AdvancedCustomDrawItem(
Sender: TCustomListView; Item: TListItem; State: TCustomDrawState;
Stage: TCustomDrawStage; var DefaultDraw: Boolean);
begin
FDefaultCanvasColor := clWindow;
if Item.SubItems[1] = 'Test' then begin
FDefaultCanvasColor := $66CCFFFF;
end;
// if i remove this line, everything is OK
(Sender As TCustomListView).Canvas.Brush.Color := FDefaultCanvasColor;
end;
上面显示了视觉效果(控件变得无响应,控件上的伪影),然后崩溃(YourApp.exe 停止工作标准 Windows 错误消息)。
第二次更新
我还不能重现这个问题,但我正在努力。
我最终拥有了控件(尽管我不情愿),它可以正常工作。
我仍然会研究这个问题,如果我想出解决方案会让你知道。