设置Style为lbOwnerDrawFixed 在OnDrawItem事件中写 with SkinList.Canvas do begin if SkinList.Checked[Index] then Brush.Color := clBlue else Brush.color := clWhite; FillRect(Rect); TextOut(Rect.Left, Rect.Top, SkinList.Items.Strings[Index]); end;
listview 无style属性呀。还报错!!能再给看看吗。wywry谢谢了
大概这样写,有一点效果,楼主自己再弄弄吧 procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView; Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean); var Rect :TRECT; begin with Sender.Canvas do begin if Item.Checked then begin Color := clWhite; Brush.Color := clBlue end else begin Color := clBlack; Brush.color := clWhite; end; Rect := Item.DisplayRect(drBounds); FillRect(Rect); end; DefaultDraw := true; end;
procedure TFrmTemIn.ListView1AdvancedCustomDrawItem(Sender: TCustomListView; Item: TListItem; State: TCustomDrawState; Stage: TCustomDrawStage; var DefaultDraw: Boolean); var i:integer; begin if Item.Checked then begin ListView1.Canvas.Brush.Color:=$0046A3FF; end else begin ListView1.Canvas.Brush.Color:=$0080FF80; end; end;
在OnDrawItem事件中写
with SkinList.Canvas do
begin
if SkinList.Checked[Index] then
Brush.Color := clBlue
else
Brush.color := clWhite;
FillRect(Rect);
TextOut(Rect.Left, Rect.Top, SkinList.Items.Strings[Index]);
end;
procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
var
Rect :TRECT;
begin
with Sender.Canvas do
begin
if Item.Checked then
begin
Color := clWhite;
Brush.Color := clBlue
end
else
begin
Color := clBlack;
Brush.color := clWhite;
end; Rect := Item.DisplayRect(drBounds);
FillRect(Rect);
end; DefaultDraw := true;
end;
Item: TListItem; State: TCustomDrawState; Stage: TCustomDrawStage;
var DefaultDraw: Boolean);
var
i:integer;
begin
if Item.Checked then
begin
ListView1.Canvas.Brush.Color:=$0046A3FF;
end
else
begin
ListView1.Canvas.Brush.Color:=$0080FF80;
end;
end;