一個功能增強的Delphi TListView組件
lixif
www.netgocn.com
在Windoes編程中列表視圖(ListView)是一個通用控件,當將其樣式設為Report時,系統將自動為它加上一個表頭控件(以下簡稱表頭),但通常我們不能直接對這個表頭控件進行操作。同樣Delphi的TListView組件也沒有為我們提供可以直接對該表頭進行控制的方法,這篇文章介紹一種通過自定義組件的方法,對Delphi的TListView組件進行功能增強,做一個通用的列表視圖但是它增加了以下功能:
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;