【发布时间】:2014-09-23 18:34:55
【问题描述】:
我尝试使用OnCustomDrawItem 事件更改颜色,但没有效果。
procedure TForm1.RListCustomDrawItem(Sender: TCustomListView; Item: TListItem;
State: TCustomDrawState; var DefaultDraw: Boolean);
begin
if cdsSelected in State then begin
Sender.Canvas.Brush.Color:=clRed;
Sender.Canvas.Font.Color:=clYellow;
end;
end;
我使用带有 3 列的默认 TListView 组件,并将 ViewStyle 设置为 vsReport。
【问题讨论】:
-
您是否将
OwnerDraw属性设置为 True ? -
我运行这段代码,我得到白色背景上的黄色文本。你看到了什么。
-
我看到了 windows 默认颜色,好像
CustomDraw事件根本不存在。 (在 Delphi 2009 / Win7 / Windows Classic 主题中测试) -
您的应用是否有 comctl32 v6 清单?而且你有一个默认的列表视图。没有设置为非默认值的属性?除了
ViewStyle以外,假设是vsReport。我想我的目的是您应该确保我们运行的代码与您完全相同。 MCVE 会很好。 -
我不知道什么是 comctl32 清单,但我搜索了我的计算机,发现 Windows 文件夹中有许多 comctl32-v5 文件(如果有帮助的话)。我使用默认的
TListView组件(来自 Delphi 2009),其中 3 列 ViewStyle 设置为vsReport。
标签: delphi delphi-2009