如何自定义listitem?????(300分)

  • 主题发起人 主题发起人 金洪
  • 开始时间 开始时间
To menxin
谢谢,我要先试一下!
 
关于自绘LISTVIEW,可以参考这个
http://www.delphibbs.com/delphibbs/dispq.asp?lid=780975
 
我以前也试图对Tlistview进行修改,
后来发现,在不对Tlistview本身作修改的前提下,
好象无法只对它的listitem作修改。

所以,后来我干脆把Tlistview从Delphi中提出来,自己重新给它们起个名字,
然后对内部进行统一的修改,方算搞定它。

我在Delphi开发者资源社区放的一个Tlistview使用例子就是这样作的。

有兴趣可以去看看了
 
TListView继承自TCustomListView,下面是TCustomListView的DrawItem方法,它其实就是
画了个区域,然后在这个区域里把文字显示出来,你在这个区域外面再画个边框不就行了。
可以用Lineto函数画几条线,只不过把颜色调一下,看起来有阴影就可以了
procedure TCustomListView.DrawItem(Item: TListItem; Rect: TRect;
State: TOwnerDrawState);
begin
TControlCanvas(FCanvas).UpdateTextFlags;
if Assigned(FOnDrawItem) then FOnDrawItem(Self, Item, Rect, State)
else
begin
FCanvas.FillRect(Rect);//这是DELPHI自己画区域
FCanvas.TextOut(Rect.Left + 2, Rect.Top, Item.Caption);//这是DELPHI自己输出文字
//下面是你自己要加的
//**************************************************
//在这里画框,象下面这样
Fcanvas.Brush.Color := clGray;//设置画刷颜色
Fcanvas.lineto(Rect.Left-2,Rect.Right+2) //画线,四周都画线,
//用几条线组成框就可以了。
//**************************************************
end;
end;
 
To menxin,左右手,程云
非常感谢,我要在试一下。
To 程云,能否告诉我具体地址!
 
大家还有没有更好的方法,最好能给出例子!
 
最笨的办法是修改LargeImages属性中的ImageList的位图?
 
多人接受答案了。
 
后退
顶部