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 位开始查找,找到最后。
FindCaption 方法返回的是第1 个被找到的符合条件的项,若是没找到符合条件的,则返回列表中的第1 项。
(4)Scroll 方法
此方法可使列表视图滚动。Scroll 方法有两个Integer 类型的参数。
- DX:控制视图的左右一次移动的像素数,正数表明向右移动,负数表明向左移动。
- DY:控制视图的上下一次移动的像素数,正数表明向下移动,负数表明向上移动。
(5)StringWidth 方法
此方法用于返回字符串的宽度。StringWidth 方法中用到一个String 类型的参数S,StringWidth 方法是根据当前TListView 组件的字体、字号返回参数S 指定的字符串宽度的像素数。
(6)UpdateItems 方法
此方法能够重画指定范围内的项。UpdateItems 有两个Integer 类型的参数:
- FirstIndex:用于指定重画项的开始位置。
- LastIndex:用于指定重画项的最后位置。