我想使用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;