编程教程
您现在的位置: 中国个人站长站 >> 网络编程 >> Delphi >> 教程正文 一个功能增强的Delphi TListView组件
推荐位

一个功能增强的Delphi TListView组件

中国个人站长站 Delphi 点击数: 更新时间:2005-8-28 11:21:44

 

一个功能增强的Delphi TListView组件
lixif
www.netgocn.com

Windoes编程中列表视图(ListView)是一个通用控件,当将其样式设为Report时,系统将自动为它加上一个表头控件(以下简称表头),但通常我们不能直接对这个表头控件进行操作。同样DelphiTListView组件也没有为我们提供可以直接对该表头进行控制的方法,这篇文章介绍一种通过自定义组件的方法,对DelphiTListView组件进行功能增强,做一个通用的列表视图但是它增加了以下功能:

1)    增加一个可以从外部调用的排序方法,当视图的显示样式为Report时,点击各列的表头按钮可按其列值进行排序;

2)    点击各列的表头按钮进行排序的同时在视图的表头上按排序方向绘制一个箭头,其效果类似Outlook Express

3)    增加视图表头的字体属性;

4)    增加一个背景图属性。

通过代码编写增强了Delphi通用列表视图的功能,但它仍是一个通用的列表视图控件。

 

自定义组件的基本步骤请参见有关文章,但是在此我们选择的基类是TListView,下面我们直接从Delphi自动生成的组件单元文件的数据类型定义部份开始(本文代码在Delphi 4.0下完成)

一、将Delphi自动生成的单元文件的数据类型定义部份修改为:

 

type

TListView1 = class(TListView)

private

  FaToz :Boolean;

  FoldCol :Integer;

  FPicture :TPicture;

  FHeaderFont:TFont;

  procedure SetHeaderFont(Value:TFont);

  procedure SetHeaderStyle(phd:PHDNotify);

  procedure DrawHeaderItem(pDS:PDrawItemStruct);

  procedure SetPicture(Value: TPicture);

  procedure PictureChanged(Sender: TObject);

  procedure LVCustomDraw(Sender:TCustomListView;const ARect:TRect;var DefaultDraw:Boolean);

  procedure DrawBack;

protected

  procedure WndProc(var Message : TMessage); override;

public

  constructor Create(AOwner: TComponent); override;

  destructor Destroy; override;

  procedure SortColumn(Column: TListColumn);

published

  property BackPicture: TPicture read FPicture write SetPicture;

  property HeaderFont: TFont read FHeaderFont write SetHeaderFont;

end;

 

说明:

a). published段我们定义了两个属性。背景图属性BackPicture,其数据类型是TPicture;表头字体属性HeaderFont,其数据类型是Tfont

b). 为了读/BackPicture属性的值,在private段分别定义了它的私有数据FPicture和属性的写方法SetPicture;同理,在private段为HeaderFontn属性分别定义了它的私有数据FHeaderFont和属性的写方法SetHeaderFont

c). public段重载了TListView的构造函数和析构函数;

d). protected段重载了TListViewWndProc过程;

e). 为了能在设计期间动态改变视图的背景图,我们自定义了二个事件响应过程,PictureChangedLVCustomDrawPictureChanged是背景图属性BackPicture的私有数据FPictureTPicture)的OnChange事件响应过程,设计期间当我们通过DelphiObject Inspector面板改变BackPicture的值时,将产生OnChang事件而执行该过程重绘列表视图(过程就是这样写的),这又将产生视图的OnCustomDraw事件而执行我们自定义的LVCustomDraw事件响应过程,也即LVCustomDraw是列表视图的OnCustomDraw事件响应过程;

f).

[1] [2] [3] [4] [5] 下一页

教程录入:swh    责任编辑:swh 
个人站长站与你风雨同舟!
本站所提供的资源均来源于互联网,如有侵权行为,请与本站管理员联系,我们会第一时间删除!
·如果您发现《一个功能增强的Delphi TListView组件》文章有错误,也请通知我们修改!
联系邮箱chinageren#126.com,谢谢支持!
站内搜索:
广告服务 | 友情链接 | 联系我们 | 免责声明 | 用户留言 | 网站导航
版权所有:中国个人站长站 2007-2008 未经授权禁止复制或建立镜像 客服QQ号:112731235
copyright © 2007-2008 www.ChinaGeRen.com online services. all rights reserved. 苏ICP备05000059号