当前位置:  开发笔记 > 编程语言 > 正文

如何在Delphi中的TListView子项上绘制bmp /图标?

如何解决《如何在Delphi中的TListView子项上绘制bmp/图标?》经验,为你挑选了1个好方法。

我想使用delphi将图标/ bmp绘制到TListView的子项中.但我不知道如何做到这一点.它适用于列表中的第一个项目,但有子项目的问题.



1> Toon Krijthe..:

您可以使用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;

推荐阅读
喜生-Da
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有