Delphi(TListView)串列視圖組件詳解
TListView 組件以多種形式顯示串列的專案,如詳細資料、小圖示、大圖示等形式表示串列中的專案,串列視圖與用TListBox 組件實作的串列框非常相似,不同的是,串列視圖可以讓用戶選擇不同的顯示方式,諸如大圖示方式、小圖示方式、簡單串列方式和詳細串列方式等,Windows XP 的資源管理器就是一個典型的串列視圖,
一.TListView 組件的典型用法
串列視圖的顯示方式是通過ViewStyle 屬性設定的,當ViewStyle 屬性設為vsReport 時,串列視圖將以詳細串列的方式顯示,以Windows XP 的資源管理器為例,當選中“查看”選單上的“詳細資料”命令時,串列視圖中將顯示檔案或檔案夾的圖示、名稱、位元組數、型別和上次修改時間等資訊,以詳細串列方式顯示時,需要把Columns 屬性設為需要的欄數,如果要給每一欄顯示一個表頭,必須把ShowColumnHeaders 屬性設為True,如果把ColumnClick 屬性設為True,每一欄的表頭就相當于一個按鈕,單擊這些按鈕將觸發OnColumnClick 事件,單擊“名稱”這一欄表頭,目錄中的檔案將按檔案名的字母進行排序,單擊“大小”這個按鈕,目錄中的檔案將以檔案的位元組數進行排序,
程式應當為串列視圖中的每一項指定圖示,因此需要建立兩個影像串列,一個用于大圖示顯示方式,另一個用于小圖示顯示方式(因為這兩種方式下的圖示大小是不同的),然后分別設定LargeImages屬性和SmallImages 屬性指定這兩個影像串列,
二.TListView 組件的重要屬性
| ·BoundingRect | 回傳一個能把串列視圖中所有項包住的矩形 |
| ·CheckBoxed | 串列視圖中項的旁邊將顯示復選框 |
| ·Column | 此屬性可以訪問串列視圖中的每一欄 |
| ·ColumnClick | 此屬性設為True時,將觸發OnColumnClick事件 |
| ·Columns | 串列視圖的每一項將分成很多欄 |
| ·FlatScrollBars | 串列視圖的滾動條是平坦的 |
| ·FullDrag | 允許用戶拖動表頭 |
| ·GridLines | 此屬性將顯示柵格線 |
| ·HideSelection | 當輸入焦點移走時,原先選擇的節點是否處于被選擇狀態 |
| ·HotTrack | 當滑鼠指向某個項時,該項的外觀將與眾不同 |
| ·HoverTime | 此屬性用于設定滑鼠必須停留多久才能選擇一個項,1000代表1秒 |
| ·ItemFocused | 指定或回傳串列視圖中具有輸入焦點的項 |
| ·Items | 代表串列視圖中的所有項 |
| ·LargeImages | 此屬性用于指定大圖示顯示方式下大圖示所在的影像串列 |
| ·MultiSelect | 如果此屬性設為True,用戶可以同時選擇多個項 |
| ·ReadOnly | 串列視圖是只讀的 |
| ·RowSelect | 用戶可以一次選擇一整行 |
| ·SelCount | 回傳串列視圖中被選擇的項的數目 |
| ·Selected | 此屬性用于設定回傳串列視圖中被選擇的項 |
| ·SmallImages | 指定小圖示顯示方式下小圖示所在的影像串列 |
| ·ShowWorkAreas | 通過定義作業區,可以把圖示分組 |
| ·SortType | 此屬性用于設定什么情況下串列視圖中的項將重新排序 |
| ·StateImages | 此屬性用于指定一個影像串列 |
| ·TopItem | 回傳串列視圖中當前可見的最頂端的項 |
| ·ViewStyle | 設定串列視圖的顯示方式 |
(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”視窗,然后建立和編輯欄的屬性,
(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 屬性
此屬性用于設定什么情況下串列視圖中的項將重新排列,它設定了如下4 個用戶可選值,- vsIcon:以大圖示方式顯示,
- vsSmallIcon:以小圖示方式顯示,
- vsList:以簡單串列方式顯示,不能進行拖放操作,
- vsReport:以詳細串列方式顯示,最左邊的欄顯示項的圖示和標簽,
三.TListView 組件的重要事件
| OnColumnClick | 當用戶單擊欄的表頭時,將觸發該事件 |
| OnColumnDragged | 當用戶用滑鼠左鍵拖動某一欄到一個新的位置時,將觸發該事件 |
| OnEdited | 當用戶直接編輯修改了項的標簽后,將觸發該事件 |
| OnGetImageIndex | 當一個項將要在螢屏上重繪時,將觸發這個事件 |
| OnInfoTip | 通過這個事件給串列視圖中的每一項加上提示 |
| OnSelectItem | 當串列視圖中一個項被選擇時,將觸發這個事件 |
下面介紹程式中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 引數指定的項,四.TListView 組件的重要方法
| AlphaSort | 將串列視圖中的項按標簽的字母順序排序 |
| Arrange | 此方法用于重排圖示 |
| FindCaption | 此方法用于搜索并回傳一個項 |
| Scroll | 此方法使串列視圖滾動 |
| StringWidth | 此方法回傳字串的寬度 |
| UpdateItems | 此方法重畫指定范圍內的項 |
下面介紹程式中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 位開始查找,找到最后,
(4)Scroll 方法
此方法可以使串列視圖滾動,Scroll 方法有兩個Integer 型別的引數,- DX:控制視圖的左右一次移動的像素數,正數代表向右移動,負數代表向左移動,
- DY:控制視圖的上下一次移動的像素數,正數代表向下移動,負數代表向上移動,
(5)StringWidth 方法
此方法用于回傳字串的寬度,StringWidth 方法中用到一個String 型別的引數S,StringWidth 方法是根據當前TListView 組件的字體、字號回傳引數S 指定的字串寬度的像素數,(6)UpdateItems 方法
此方法可以重畫指定范圍內的項,UpdateItems 有兩個Integer 型別的引數:- FirstIndex:用于指定重畫項的開始位置,
- LastIndex:用于指定重畫項的最后位置,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/322.html
標籤:Delphi
上一篇:Delphi獲取檔案名、不帶擴展名檔案名、檔案所在路徑、上級檔案夾路徑的方法
下一篇:Delphi中的執行緒類
