procedure TMainForm.ListView1CustomDrawItem(Sender: TCustomListView; Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean); begin if Item.Caption = 'aaa' then //加上条件 (Sender as TListView).Canvas.Font.Color := clMaroon else (Sender as TListView).Canvas.Font.Color := clRed; end;
今天快下班了,先给个基本demo, use CommCtrl ....... procedure TForm1.Button1Click(Sender: TObject); var aa:Trect; hbrred,hbrblue:HBRUSH; begin hbrred:= createsolidbrush(clred); hbrblue:= createsolidbrush(clblue); ListView_GetItemRect(self.ListView1.Handle,1, aa, LVIR_BOUNDS); fillrect(getdc(self.ListView1.Handle),aa,hbrred); ListView_GetItemRect(self.ListView1.Handle,2, aa, LVIR_BOUNDS); fillrect(getdc(self.ListView1.Handle),aa,hbrblue); end;你先看看吧,主要是提供个函数ListView_GetItemRect
在 jinjazz(近身剪(N-P攻略))基础上改一下,只能改变有数据区域 procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView; Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean); begin if Item.Index mod 2=0 then //¼ÓÉÏÌõ¼þ (Sender as TListView).Canvas.Brush.Color := clblue else (Sender as TListView).Canvas.Brush.Color := clgreen; end;
主要解答者: tommy_linux 提交人: zxfsdbj
感谢: tommy_linux
审核者: findcsdn 社区对应贴子: 查看
A : 如何改变listview一行的颜色
---------------------------------------------------------------
procedure TMainForm.ListView1CustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
if Item.Caption = 'aaa' then //加上条件
(Sender as TListView).Canvas.Font.Color := clMaroon
else
(Sender as TListView).Canvas.Font.Color := clRed;
end;
use CommCtrl
.......
procedure TForm1.Button1Click(Sender: TObject);
var
aa:Trect;
hbrred,hbrblue:HBRUSH;
begin
hbrred:= createsolidbrush(clred);
hbrblue:= createsolidbrush(clblue);
ListView_GetItemRect(self.ListView1.Handle,1, aa, LVIR_BOUNDS);
fillrect(getdc(self.ListView1.Handle),aa,hbrred);
ListView_GetItemRect(self.ListView1.Handle,2, aa, LVIR_BOUNDS);
fillrect(getdc(self.ListView1.Handle),aa,hbrblue);
end;你先看看吧,主要是提供个函数ListView_GetItemRect
procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
if Item.Index mod 2=0 then //¼ÓÉÏÌõ¼þ
(Sender as TListView).Canvas.Brush.Color := clblue
else
(Sender as TListView).Canvas.Brush.Color := clgreen;
end;