Delphi(TListView)列表视图组件详解
<div id="content_views" class="htmledit_views"><h1>Delphi(TListView)列表视图组件详解</h1>
TListView 组件以多种形式显示列表的项目,如详细资料、小图标、大图标等形式表示列表中的项目。<br>
列表视图与用TListBox 组件实现的列表框非常相似。不同的是,列表视图可以让用户选择不同的显示方式,诸如大图标方式、小图标方式、简单列表方式和详细列表方式等。Windows XP 的资源管理器就是一个典型的列表视图。<br>
<h2>一.TListView 组件的典型用法</h2>
列表视图的显示方式是通过ViewStyle 属性设置的。当ViewStyle 属性设为vsReport 时,列表视图将以详细列表的方式显示。以Windows XP 的资源管理器为例,当选中“查看”菜单上的“详细资料”命令时,列表视图中将显示文件或文件夹的图标、名称、字节数、类型和上次修改时间等信息。<br>
以详细列表方式显示时,需要把Columns 属性设为需要的栏数,如果要给每一栏显示一个表头,必须把ShowColumnHeaders 属性设为True。如果把ColumnClick 属性设为True,每一栏的表头就相当于一个按钮,单击这些按钮将触发OnColumnClick 事件。单击“名称”这一栏表头,目录中的文件将按文件名的字母进行排序。单击“大小”这个按钮,目录中的文件将以文件的字节数进行排序。<br>
程序应当为列表视图中的每一项指定图标。因此需要建立两个图像列表,一个用于大图标显示方式,另一个用于小图标显示方式(因为这两种方式下的图标大小是不同的),然后分别设置LargeImages属性和SmallImages 属性指定这两个图像列表。<br>
<h2>二.TListView 组件的重要属性</h2>
<div>
<table style="width: 600px" border="0" cellspacing="0" cellpadding="0"><colgroup><col width="130"><col width="470"></colgroup>
<tbody>
<tr>
<td>·BoundingRect</td>
<td>返回一个能把列表视图中所有项包住的矩形</td>
</tr>
<tr>
<td>·CheckBoxed</td>
<td>列表视图中项的旁边将显示复选框</td>
</tr>
<tr>
<td>·Column</td>
<td>此属性可以访问列表视图中的每一栏</td>
</tr>
<tr>
<td>·ColumnClick</td>
<td>此属性设为True时,将触发OnColumnClick事件</td>
</tr>
<tr>
<td>·Columns</td>
<td>列表视图的每一项将分成很多栏</td>
</tr>
<tr>
<td>·FlatScrollBars</td>
<td>列表视图的滚动条是平坦的</td>
</tr>
<tr>
<td>·FullDrag</td>
<td>允许用户拖动表头</td>
</tr>
<tr>
<td>·GridLines</td>
<td>此属性将显示栅格线</td>
</tr>
<tr>
<td>·HideSelection</td>
<td>当输入焦点移走时,原先选择的节点是否处于被选择状态</td>
</tr>
<tr>
<td>·HotTrack</td>
<td>当鼠标指向某个项时,该项的外观将与众不同</td>
</tr>
<tr>
<td>·HoverTime</td>
<td>此属性用于设置鼠标必须停留多久才能选择一个项,1000代表1秒</td>
</tr>
<tr>
<td>·ItemFocused</td>
<td>指定或返回列表视图中具有输入焦点的项</td>
</tr>
<tr>
<td>·Items</td>
<td>代表列表视图中的所有项</td>
</tr>
<tr>
<td>·LargeImages</td>
<td>此属性用于指定大图标显示方式下大图标所在的图像列表</td>
</tr>
<tr>
<td>·MultiSelect</td>
<td>如果此属性设为True,用户可以同时选择多个项</td>
</tr>
<tr>
<td>·ReadOnly</td>
<td>列表视图是只读的</td>
</tr>
<tr>
<td>·RowSelect</td>
<td>用户可以一次选择一整行</td>
</tr>
<tr>
<td>·SelCount</td>
<td>返回列表视图中被选择的项的数目</td>
</tr>
<tr>
<td>·Selected</td>
<td>此属性用于设置返回列表视图中被选择的项</td>
</tr>
<tr>
<td>·SmallImages</td>
<td>指定小图标显示方式下小图标所在的图像列表</td>
</tr>
<tr>
<td>·ShowWorkAreas</td>
<td>通过定义工作区,可以把图标分组</td>
</tr>
<tr>
<td>·SortType</td>
<td>此属性用于设置什么情况下列表视图中的项将重新排序</td>
</tr>
<tr>
<td>·StateImages</td>
<td>此属性用于指定一个图像列表</td>
</tr>
<tr>
<td>·TopItem</td>
<td>返回列表视图中当前可见的最顶端的项</td>
</tr>
<tr>
<td>·ViewStyle</td>
<td>设置列表视图的显示方式</td>
</tr>
</tbody>
</table>
</div>
<div>
<h3>(1)BoundingRect 属性</h3>
此属性返回一个能把列表视图中所有项包住的矩形。此属性仅在ViewStyle 属性设为vsIcon 或vsSmallIcon 时有效。<br>
<h3>(2)CheckBoxed 属性</h3>
当ViewStyle 属性设为vsList 或vsReport 时,如果把CheckBoxes 属性设为True,列表视图中项的旁边将显示复选框,如同TCheckListBox 组件一样。<br>
<h3>(3)Column 属性</h3>
此属性可以访问列表视图中每一栏,Index 指定栏的序号。此属性仅当ViewStyle 属性设为vsReport时有效。<br>
<h3>(4)ColumnClick 属性</h3>
如果此属性设为True,栏的表头(如果有的话)将同时作为按钮用,按下这些按钮,将触发OnColumnClick 事件,通常用于对列表视图中的项进行重新排序。<br>
<h3>(5)Columns 属性</h3>
如果ViewStyle 属性设为vsReport,列表视图的每一项将分成多栏,每一栏都是一个TListColumn对象,所有的栏构成TListColumn 对象。<br>
在设计期,可以单击Columns 属性旁的省略号“ ”按钮打开“Editing Columns”窗口,然后建立和编辑栏的属性。<br>
<h3>(6)HideSelection 属性 </h3>
如果此属性设为True,当输入焦点从列表视图移到其他组件上时,原先选择的节点将不再处于被选择状态。如果此属性设为False,当输入焦点移走时仍然保持选择状态。 <br>
<h3>(7)ItemFocused 属性 </h3>
此属性指定或返回列表视图中具有输入焦点的项。一个列表视图中可以同时有多个项被选择,但只能有一个项具有输入焦点。 <br>
<h3>(8)Items 属性 </h3>
此属性代表列表视图中的所有项。列表视图中的每一项是一个TListItem 对象。在设计期,可以按下Items 属性旁的“...”按钮打开“ListView Items”编辑器,然后建立和编辑列表视图中的每一项.<br>
<h3>(9)MultiSelect 属性 </h3>
如果此属性设为True,用户可以同时选择多个项。 <br>
<h3>(10)RowSelect 属性 </h3>
在ViewStyle 属性设为vsReport 的前提下,如果把此属性设为True,用户可以一次选择一整行。 <br>
<h3>(11)Selected 属性 </h3>
此属性用于设置返回列表视图中被选择的项。如果有多项被选择,返回的是当前有输入焦点的项。 <br>
<h3>(12)ShowWorkAreas 属性</h3>
在ViewStyle 属性设为vsIcon 或vsSmallIcon 的情况下,通过定义工作区,可以把图标分组,如果ShowWorkAreas 属性设为True,列表视图将把客户区分成几个工作区,每个工作区的颜色由TWorkArea的Color 属性指定,标签由TWorkArea 的DisplayName 属性指定。<br>
<h3>(13)SortType 属性</h3>
此属性用于设置什么情况下列表视图中的项将重新排列。它设定了如下4 个用户可选值。<br>
<ul>
<li> stNone:不重新排序。</li>
<li> stData:项的Data 属性发生变化时重新排序。</li>
<li> stText:项的Caption 属性发生变化时重新排序。</li>
<li> stBoth:项的Data 属性或Caption 属性发生变化时重新排序。</li>
</ul>
<h3>(14)ViewStyle 属性</h3>
此属性用于设置什么情况下列表视图中的项将重新排列。它设定了如下4 个用户可选值。<br>
<ul>
<li> vsIcon:以大图标方式显示。</li>
<li> vsSmallIcon:以小图标方式显示。</li>
<li> vsList:以简单列表方式显示,不能进行拖放操作。</li>
<li> vsReport:以详细列表方式显示,最左边的栏显示项的图标和标签。</li>
</ul>
</div>
<div> </div>
<div>
<h2>三.TListView 组件的重要事件</h2>
<table style="width: 601px" border="0" cellspacing="0" cellpadding="0"><colgroup><col width="119"><col width="482"></colgroup>
<tbody>
<tr>
<td>OnColumnClick</td>
<td>当用户单击栏的表头时,将触发该事件</td>
</tr>
<tr>
<td>OnColumnDragged</td>
<td>当用户用鼠标左键拖动某一栏到一个新的位置时,将触发该事件</td>
</tr>
<tr>
<td>OnEdited</td>
<td>当用户直接编辑修改了项的标签后,将触发该事件</td>
</tr>
<tr>
<td>OnGetImageIndex</td>
<td>当一个项将要在屏幕上刷新时,将触发这个事件</td>
</tr>
<tr>
<td>OnInfoTip</td>
<td>通过这个事件给列表视图中的每一项加上提示</td>
</tr>
<tr>
<td>OnSelectItem</td>
<td>当列表视图中一个项被选择时,将触发这个事件</td>
</tr>
</tbody>
</table>
<br>
下面介绍程序中TListView 组件的常用事件。<br>
<h3>(1)OnColumnClick 事件</h3>
当用户单击栏的表头时,将触发该事件。这样就可以对项进行排序。在OnColumnClick 事件中有一个TListColumn 类型的参数Column,此参数返回用户单击的栏,利用Column 参数可以对用户选中的栏进行访问及设置。<br>
<h3>(2)OnColumnDragged 事件</h3>
当用户用鼠标左键拖动某一栏到一个新的位置时,将触发该事件。在使用此事件之前必须将TListView 组件的FullTrag 属性设置为True,表示可以拖动栏的位置,否则不能拖动,也就不能触发此事件。<br>
<h3>(3)OnEdited 事件</h3>
当用户直接编辑修改了项的标签后,将触发该事件。OnEdited 事件中有一个TListItem 类型的参数Item,利用此参数可以对用户编辑的项进行访问;OnEdited 事件中还有一个String 类型的参数S,它是用户更改项的标签后,显示标签的内容。<br>
<h3>(4)OnInfoTip 事件</h3>
通过这个事件可以为列表视图中的每一项加上提示。OnInfoTip 事件中有一个TListItem 类型的参数Item,利用此参数可以对用户编辑的项进行访问;OnInfoTip 事件中还有一个String 类型的参数InfoTip,更改它的值就可以为每一项加上提示。<br>
例如将每一项的提示设置为项的标签内容,就可以在OnInfoTip 事件中添加如下代码:<br>
InfoTip:=Item.Caption;<br>
如果要显示提示信息,必须将TListView 组件的ShowHind 属性设置为True。<br>
<h3>(5)OnSelectItem 事件</h3>
当列表视图中一个项被选择时,将触发这个事件。OnSelectItem 事件中有一个TListItem 类型的参数Item,利用此参数可以对用户编辑的项进行访问;OnSelectItem 事件中还有一个Boolean 类型的参数Selected。每次选择一个新项时将两次触发此事件,一次是释放以前被选择的项,Selected 参数取值为False,代表释放Item 参数指定的项;另外一次是选择新的项,Selected 参数取值为True,代表选择Item 参数指定的项。<br>
<h2>四.TListView 组件的重要方法</h2>
<table style="width: 601px" border="0" cellspacing="0" cellpadding="0"><colgroup><col width="119"><col width="482"></colgroup>
<tbody>
<tr>
<td>AlphaSort</td>
<td>将列表视图中的项按标签的字母顺序排序</td>
</tr>
<tr>
<td>Arrange</td>
<td>此方法用于重排图标</td>
</tr>
<tr>
<td>FindCaption</td>
<td>此方法用于搜索并返回一个项</td>
</tr>
<tr>
<td>Scroll</td>
<td>此方法使列表视图滚动</td>
</tr>
<tr>
<td>StringWidth</td>
<td>此方法返回字符串的宽度</td>
</tr>
<tr>
<td>UpdateItems</td>
<td>此方法重画指定范围内的项</td>
</tr>
</tbody>
</table>
<br>
下面介绍程序中TListView 组件常用的方法。<br>
<h3>(1)AlphaSort 方法</h3>
此方法可以将列表视图中的项按标签的字母顺序排序。例如使用下面的代码就能够将ListView1组件的项按标签的字母顺序排序:<br>
ListView1.AlphaSort;<br>
<h3>(2)Arrange 方法</h3>
此方法用于重排图标。Arrange 方法只有在ViewStyle 属性为vsIcon 或vsSmallIcon 时才起作用。<br>
Arrange 方法中有一个TListArrangement 类型的参数Code,此参数用于指定图标的排列方式,其取值及功能如下。<br>
<ul>
<li>arAlignBottom:图标底部对齐排列。</li>
<li>arAlignLeft:图标左侧对齐排列。</li>
<li>arAlignRight:图标右侧对齐排列。</li>
<li>arAlignTop:图标顶部对齐排列。</li>
<li>arDefault:按照窗口刚建立时的风格将图标从顶部排列。</li>
<li>arSnapToGrid:将图标对齐到最近的网格,此值不支持虚拟模式。</li>
</ul>
<h3>(3)FindCaption 方法</h3>
此方法的调用可以搜索并返回一个TListItem 类型的项。FindCaption 方法中有5 个参数,功能如下。<br>
<ul>
<li>StartIndex:Integer 类型,用于指定开始搜索的起始位置。</li>
<li>Value:String 类型,指定要搜索的项的标题符合的内容。</li>
<li>Partial:Boolean 类型,取True 值,查找标题开头为Value 参数指定的项;取False 值,查找标题与Value 参数指定的内容相同的项。</li>
<li>Inclusive:Boolean 类型,取True 值,被StartIndex 指定的项是第1 个被选中的;取False 值,开始查找的位置从StartIndex 拟定的下一个位置开始。</li>
<li>Warp:Boolean 类型,取True 值,搜索将从开始找到最后;取False 值,搜索从StartIndex 位开始查找,找到最后。</li>
</ul>
FindCaption 方法返回的是第1 个被找到的符合条件的项,如果没找到符合条件的,则返回列表中的第1 项。<br>
<h3>(4)Scroll 方法</h3>
此方法可以使列表视图滚动。Scroll 方法有两个Integer 类型的参数。<br>
<ul>
<li>DX:控制视图的左右一次移动的像素数,正数代表向右移动,负数代表向左移动。</li>
<li>DY:控制视图的上下一次移动的像素数,正数代表向下移动,负数代表向上移动。</li>
</ul>
<h3>(5)StringWidth 方法</h3>
此方法用于返回字符串的宽度。StringWidth 方法中用到一个String 类型的参数S,StringWidth 方法是根据当前TListView 组件的字体、字号返回参数S 指定的字符串宽度的像素数。<br>
<h3>(6)UpdateItems 方法</h3>
此方法可以重画指定范围内的项。UpdateItems 有两个Integer 类型的参数:<br>
<ul>
<li> FirstIndex:用于指定重画项的开始位置。</li>
<li>LastIndex:用于指定重画项的最后位置。</li>
</ul>
</div>
</div><br><br>
来源:https://www.cnblogs.com/KK3228911/p/10026866.html
頁:
[1]