delphi里面的listview怎么改变一行的背景色

时间:2022-01-01 19:30:48
delphi的listview怎么改变一行的背景色,但是不要覆盖里面的文字。还有怎么改变网格线的颜色?

7 个解决方案

#1


要重绘,网上有很多ListView重绘的代码

#2


根据代码自己修改一下即可
procedure TXXForm.ListViewAdvancedCustomDrawItem(
  Sender: TCustomListView; Item: TListItem; State: TCustomDrawState;
  Stage: TCustomDrawStage; var DefaultDraw: Boolean);
begin
  if (Item.Index mod 2)=0 then Sender.Canvas.Brush.Color := $AA8833;
  //隔行有背景颜色
end;

#3


该回复于2013-01-07 13:22:03被管理员删除

#4


建议你更换第三方控件
VirtualTreeView

完全可以替代自带的ListView,而且要实现你要的功能很简单

#5


引用 2 楼 kiboisme 的回复:
根据代码自己修改一下即可
Delphi/Pascal code?1234567procedure TXXForm.ListViewAdvancedCustomDrawItem(  Sender: TCustomListView; Item: TListItem; State: TCustomDrawState;  Stage: TCustomDrawStage; var……

如果Listview里面的一行被选中,HideSelection属性已经设置为false,在该Listview失去焦点的时候让那个被选中的行处于高亮显示,想让他显示蓝色,而不是默认的灰色,这个怎么做??

#6


HideSelection 设置为True
还是那个事件里,
  if Item.Selected then Sender.Canvas.Brush.Color := $FF9933;
即可

#7


成功,谢谢了。

#1


要重绘,网上有很多ListView重绘的代码

#2


根据代码自己修改一下即可
procedure TXXForm.ListViewAdvancedCustomDrawItem(
  Sender: TCustomListView; Item: TListItem; State: TCustomDrawState;
  Stage: TCustomDrawStage; var DefaultDraw: Boolean);
begin
  if (Item.Index mod 2)=0 then Sender.Canvas.Brush.Color := $AA8833;
  //隔行有背景颜色
end;

#3


该回复于2013-01-07 13:22:03被管理员删除

#4


建议你更换第三方控件
VirtualTreeView

完全可以替代自带的ListView,而且要实现你要的功能很简单

#5


引用 2 楼 kiboisme 的回复:
根据代码自己修改一下即可
Delphi/Pascal code?1234567procedure TXXForm.ListViewAdvancedCustomDrawItem(  Sender: TCustomListView; Item: TListItem; State: TCustomDrawState;  Stage: TCustomDrawStage; var……

如果Listview里面的一行被选中,HideSelection属性已经设置为false,在该Listview失去焦点的时候让那个被选中的行处于高亮显示,想让他显示蓝色,而不是默认的灰色,这个怎么做??

#6


HideSelection 设置为True
还是那个事件里,
  if Item.Selected then Sender.Canvas.Brush.Color := $FF9933;
即可

#7


成功,谢谢了。