我想使用delphi将图标/ bmp绘制到TListView的子项中.但我不知道如何做到这一点.它适用于列表中的第一个项目,但有子项目的问题.
您可以使用CustomDrawSubItem事件.
下面的示例忽略文本并绘制矩形.不幸的是,为正确的列获取矩形有点麻烦,但这种方法有效:
procedure TForm.ListViewCustomDrawSubItem(Sender: TCustomListView;
Item: TListItem; SubItem: Integer; State: TCustomDrawState;
var DefaultDraw: Boolean);
var
r : TRect;
i : Integer;
begin
r := Item.DisplayRect(drBounds);
for i := 0 to SubItem-1 do begin
r.Left := r.Left + ListView.Columns.Items[i].Width;
r.Right := r.Left + ListView.Columns.Items[i+1].Width;
end;
case SubItem of
1 : ListView.Canvas.Pen.Color := clRed;
else
ListView.Canvas.Pen.Color := clBlue;
end;
ListView.Canvas.Rectangle(r.Left, r.Top, r.Right, r.Bottom);
DefaultDraw := False;
end;
Run Code Online (Sandbox Code Playgroud)