Delphi TlistView功能及常用屬性介紹
1、TlistView功能介紹:
- TListView 控件可以用來顯示各項帶圖示的清單,包括大圖示和小圖示的;也可以用來顯示帶有子項的清單,Windows作業系統的資料總管中檔案夾視窗就是最好的應用例子,打開"我的電腦"後能夠看到各個盤符的界面
- TListView控件基本能實作和DBGrid控件一樣的功能,很多時候根據程式需要可以完全用TListView來替換DBGrid;隻要将TListView的ViewStyle屬性設為vsReport,然後再配合其他幾個屬性(這個稍後說明),就可以實作DBGrid中的綁定資料庫、資料添加、修改、删除、不同列的不同顔色顯示及單擊标題排序等等一系列常用的功能;
2、TListView 常用屬性
(1)BoundingRect 屬性:此屬性傳回一個能把清單視圖中所有項包住的矩形。此屬性僅在ViewStyle 屬性設為vsIcon 或vsSmallIcon 時有效。
(2)CheckBoxed 屬性:當ViewStyle 屬性設為vsList 或vsReport 時,如果把CheckBoxes 屬性設為True,清單視圖中項的旁邊将顯示複選框,如同TCheckListBox 元件一樣。
(3)Column 屬性:此屬性可以通路清單視圖中每一欄,Index 指定欄的序号。此屬性僅當ViewStyle 屬性設為vsReport時有效。
(4)ColumnClick 屬性:如果此屬性設為True,欄的表頭(如果有的話)将同時作為按鈕用,按下這些按鈕,将觸發OnColumnClick 事件,通常用于對清單視圖中的項進行重新排序。
(5)Columns 屬性:如果ViewStyle 屬性設為vsReport,清單視圖的每一項将分成多欄,每一欄都是一個TListColumn對象,所有的欄構成TListColumn 對象。在設計期,可以單擊Columns 屬性旁的省略号"…"按鈕打開"Editing Columns"視窗,然後建立和編輯欄的屬性。例如:
ListView1.Columns.Items[0].Caption:= '列1';
ListView1.Columns.Items[1].Caption:= '列2';//添加列
ListView1.Columns.Items[2].Caption:= '列3';
ListView1.Columns.Items[2].Width:=300; //這裡設定列的寬度
(6)HideSelection 屬性:如果此屬性設為True,當輸入焦點從清單視圖移到其他元件上時,原先選擇的節點将不再處于被選擇狀态。如果此屬性設為False,當輸入焦點移走時仍然保持選擇狀态。
(7)ItemFocused 屬性:此屬性指定或傳回清單視圖中具有輸入焦點的項。一個清單視圖中可以同時有多個項被選擇,但隻能有一個項具有輸入焦點。
(8)Items 屬性:此屬性代表清單視圖中的所有項。清單視圖中的每一項是一個TListItem 對象。在設計期,可以按下Items 屬性旁的"..."按鈕打開"ListView Items"編輯器,然後建立和編輯清單視圖中的每一項.
(9)MultiSelect 屬性:如果此屬性設為True,使用者可以同時選擇多個項。
(10)RowSelect 屬性:在ViewStyle 屬性設為vsReport 的前提下,如果把此屬性設為True,使用者可以一次選擇一整行。
(11)Selected 屬性:此屬性用于設定傳回清單視圖中被選擇的項。如果有多項被選擇,傳回的是目前有輸入焦點的項。
(12)ShowWorkAreas 屬性:在ViewStyle 屬性設為vsIcon 或vsSmallIcon 的情況下,通過定義工作區,可以把圖示分組,如果ShowWorkAreas 屬性設為True,清單視圖将把客戶區分成幾個工作區,每個工作區的顔色由TWorkArea的Color 屬性指定,标簽由TWorkArea 的DisplayName 屬性指定。
(13)SortType 屬性:此屬性用于設定什麼情況下清單視圖中的項将重新排列。它設定了如下4 個使用者可選值。
- stNone:不重新排序。
- stData:項的Data 屬性發生變化時重新排序。
- stText:項的Caption 屬性發生變化時重新排序。
- stBoth:項的Data 屬性或Caption 屬性發生變化時重新排序。
(14)ViewStyle 屬性:ListView 控件作為一個可以顯示圖示或者子項的清單控件,它最重要的屬性就是 ViewStyle 屬性,該屬性決定了以哪種視圖模式顯示控件的項,這四種視圖模式分别如下:
- 1. vsIcon:大圖示視圖模式,在項的文本旁顯示大的圖示,在控件寬度足夠的情況下,項是優先以平行排列的,排列不完的則自動換行顯示在新行中。這個屬性要和TListView的LargeImages屬性一起使用;
- 2. vsSmallIcon:小圖示視圖模式,與大圖示模式一樣,但是顯示的是小的圖示;要和TListView的SmallImages屬性一起使用;
- 3. vsList:清單視圖模式,可以顯示小圖示,但是項是垂直排列的,隻顯示單列,不能進行拖放操作;
- 4. vsReport:詳細資料視圖模式,是最豐富的選項,可以基本實作DBGrid的所有功能;它不但允許您檢視項,還允許您檢視為各項指定的任何子項。各項在網格中顯示,它們垂直排列且其子項會顯示在列中(帶有列标頭)。對應地,隻有在Details 視圖模式中起作用的控件屬性為:GridLines 和 FullRowSelect,GridLines 屬性訓示在包含控件中項及其子項的行和列之間是否顯示網格線。FullRowSelect 屬性訓示單擊某項是否選擇其所有子項(即整行選中)
3、TListView 事件
(1)OnColumnClick 事件:當使用者單擊欄的表頭時,将觸發該事件。這樣就可以對項進行排序。在OnColumnClick 事件中有一個TListColumn 類型的參數Column,此參數傳回使用者單擊的欄,利用Column 參數可以對使用者選中的欄進行通路及設定。
(2)OnColumnDragged 事件:當使用者用滑鼠左鍵拖動某一欄到一個新的位置時,将觸發該事件。在使用此事件之前必須将TListView 元件的FullTrag 屬性設定為True,表示可以拖動欄的位置,否則不能拖動,也就不能觸發此事件。
(3)OnEdited 事件:當使用者直接編輯修改了項的标簽後,将觸發該事件。OnEdited 事件中有一個TListItem 類型的參數Item,利用此參數可以對使用者編輯的項進行通路;OnEdited 事件中還有一個String 類型的參數S,它是使用者更改項的标簽後,顯示标簽的内容。
(4)OnInfoTip 事件:通過這個事件可以為清單視圖中的每一項加上提示。OnInfoTip 事件中有一個TListItem 類型的參數Item,利用此參數可以對使用者編輯的項進行通路;OnInfoTip 事件中還有一個String 類型的參數InfoTip,更改它的值就可以為每一項加上提示。例如将每一項的提示設定為項的标簽内容,就可以在OnInfoTip 事件中添加如下代碼:InfoTip:=Item.Caption;如果要顯示提示資訊,必須将TListView 元件的ShowHind 屬性設定為True。
(5)OnSelectItem 事件:當清單視圖中一個項被選擇時,将觸發這個事件。OnSelectItem 事件中有一個TListItem 類型的參數Item,利用此參數可以對使用者編輯的項進行通路;OnSelectItem 事件中還有一個Boolean 類型的參數Selected。每次選擇一個新項時将兩次觸發此事件,一次是釋放以前被選擇的項,Selected 參數取值為False,代表釋放Item 參數指定的項;另外一次是選擇新的項,Selected 參數取值為True,代表選擇Item 參數指定的項。
4、TListView 常用的方法
(1)AlphaSort 方法:此方法可以将清單視圖中的項按标簽的字母順序排序。例如使用下面的代碼就能夠将ListView1元件的項按标簽的字母順序排序:ListView1.AlphaSort;
(2)Arrange 方法:此方法用于重排圖示。Arrange 方法隻有在ViewStyle 屬性為vsIcon 或vsSmallIcon 時才起作用。
Arrange 方法中有一個TListArrangement 類型的參數Code,此參數用于指定圖示的排列方式,其取值及功能如下。
- arAlignBottom:圖示底部對齊排列。
- arAlignLeft:圖示左側對齊排列。
- arAlignRight:圖示右側對齊排列。
- arAlignTop:圖示頂部對齊排列。
- arDefault:按照視窗剛建立時的風格将圖示從頂部排列。
- arSnapToGrid:将圖示對齊到最近的網格,此值不支援虛拟模式。
(3)FindCaption 方法:此方法的調用可以搜尋并傳回一個TListItem 類型的項。FindCaption 方法中有5 個參數,功能如下。
- StartIndex:Integer 類型,用于指定開始搜尋的起始位置。
- Value:String 類型,指定要搜尋的項的标題符合的内容。
- Partial:Boolean 類型,取True 值,查找标題開頭為Value 參數指定的項;取False 值,查找标題與Value 參數指定的内容相同的項。
- Inclusive:Boolean 類型,取True 值,被StartIndex 指定的項是第1 個被選中的;取False 值,開始查找的位置從StartIndex 拟定的下一個位置開始。
- Warp:Boolean 類型,取True 值,搜尋将從開始找到最後;取False 值,搜尋從StartIndex 位開始查找,找到最後。
FindCaption 方法傳回的是第1 個被找到的符合條件的項,如果沒找到符合條件的,則傳回清單中的第1 項。
(4)Scroll 方法:此方法可以使清單視圖滾動。Scroll 方法有兩個Integer 類型的參數。
- DX:控制視圖的左右一次移動的像素數,正數代表向右移動,負數代表向左移動。
- DY:控制視圖的上下一次移動的像素數,正數代表向下移動,負數代表向上移動。
(5)StringWidth 方法:此方法用于傳回字元串的寬度。StringWidth 方法中用到一個String 類型的參數S,StringWidth 方法是根據目前TListView 元件的字型、字号傳回參數S 指定的字元串寬度的像素數。
(6)UpdateItems 方法:此方法可以重畫指定範圍内的項。UpdateItems 有兩個Integer 類型的參數:
- FirstIndex:用于指定重畫項的開始位置。
- LastIndex:用于指定重畫項的最後位置。