LISTVIEW使用指南 (VB6)

LISTVIEW控件并不是默认的工具箱的配置项目,你必须要手工添加---单击"工程"菜单项目,选择"部件",在部件对话框的"控件"栏目中选择"MICROSOFT
WINDOWS COMMON CONTROLS
6.0",确认在它前面的复选框中有一个黑色的对号,单击"确认"
按钮,这时你的工具箱中便添加了几个控件,其中,有五个空心圆圈的便是LISTVIEW控件了,
当然怎么把它添加到窗体上就不用我多说了吧。

----
我个人认为,作为一个增强功能的列表框,它的本质是用来显示更多的信息的.因此,
在这篇文章中,我着重介绍它VIEW属性的LVWREPORT(报表)值的使用.至于它的外观怎样设计,诸位当然可以随心所欲了.为了直观一点,我举一个应用实例来说明。

----
设计完成后的主界面参见图一,它实际上是一个增强功能的文件浏览器。

----
首先新建一个标准EXE工程,主窗体名称为FRMMAIN,添加一个驱动器列表框DRIVE1,一个文件列表框FILE1(设置VISIBLE属性
FALES,PATTERN属性(*.EXE;*.DLL)),一个目录列表框DIR1,一个增强列表框LISTVIEW1,一个IMAGE控件
IMAGE1和一个IMAGELIST控件IMALIST1,在IMALIST1控件上单击右键,设计IMAGELIST控件,添加一个你最喜欢的图标
(最好使用ICON图标),索引为一。在主窗体FRMMAIN的通用声明段输入以下代码:

Dim clmX As ColumnHeader;标题栏

Dim itmX As ListItem;列表项目

Dim Counter As Long;计数器

Dim Fname As String;读取文件名

Dim dname As String;增强列表框完整路径名称

Public CurrentDir As String;完整的目录名称

在主窗体的LOAD事件中写入以下代码:

Private Sub Form_Load()

Me.Caption = App.Title;

窗体的标题为生成可执行文件的标题

Me.Left = (Screen.Width - Me.Width) / 2

Me.Top = (Screen.Height - Me.Height) / 2;

窗体位置在屏幕中间

ListView1.ColumnHeaders.Add ,

, "文件名称",ListView1.Width / 3, 0

’第一个标题栏是“文件名称“,长度为ListView1

宽度的三分之一,文字左对齐

Set clmX = ListView1.ColumnHeaders.Add(,

, "序号", ListView1.Width / 5, 2)

’第二个标题栏是“序号“ 依次往下

Set clmX = ListView1.ColumnHeaders.Add(,

, "文件大小 ", ListView1.Width / 4, 1)

Set clmX = ListView1.ColumnHeaders.Add(,

, "创建时间", ListView1.Width / 3, 0)

ListView1.BorderStyle = ccFixedSingle;边界类型

ListView1.SmallIcons = ImageList1 ;

关联图标仓库ImageList1

For Counter = 0 To File1.ListCount - 1

Fname = File1.List(Counter);

获取当前目录下符合条件的文件名

Set itmX = ListView1.ListItems.Add(,

, Fname)’文件名称栏目

itmX.SubItems(1) = CStr(Counter + 1) +

"/" + CStr(File1.ListCount)’文件在列表框位置

itmX.SubItems(2) = CStr(FileLen(Fname));

文件长度

itmX.SmallIcon = 1;列表项目图标

itmX.SubItems(3) = Format(FileDateTime(Fname),

"hh:mm yyyy/MMMM/dd");文件创建时间

Next Counter

ListView1.View = lvwReport;报表类型

ListView1.Arrange = 0

ListView1.LabelWrap = False

Dir1.ToolTipText = "当前目录是:" &
Dir1.Path

END SUB

双击驱动器列表框,输入以下代码:

Private Static Sub Drive1_Change()

On Error GoTo IFerr;拦截错误

Dir1.Path = Drive1.Drive;关联目录列表框

Exit Sub

IFerr:;如果磁盘错误

MsgBox
("请确认驱动器是否准备好或者磁盘已经不可用!"),

vbOKOnly + vbExclamation

;弹出注意对话框

Drive1.Drive=Dir1.Path;忽略驱动器改变

End Sub

双击目录列表框,输入以下代码:

Private Static Sub Dir1_Change()

File1.Path = Dir1.Path;关联文件列表框

If Right(Dir1.Path, 1) < > "\"
Then

CurrentDir = Dir1.Path & "\"

Else

CurrentDir = Dir1.Path

End If;设置选定的目录名称

ListView1.ListItems.Clear;清除过期的列表项目

For Counter = 0 To File1.ListCount - 1

Fname = File1.List(Counter)

Set itmX = ListView1.ListItems.Add

(, , Fname);添加文件名

itmX.SubItems(1) = CStr(Counter + 1) + "/"

+ CStr(File1.ListCount)

itmX.SubItems(2) = CStr(FileLen(CurrentDir &
Fname))

itmX.SmallIcon = 1

itmX.SubItems(3) = Format(FileDateTime(CurrentDir
& Fname), "HH:MM YYYY/MMMM/DD")

Next Counter;添加增强列表框的各个项目

Dir1.ToolTipText = "当前目录是:" &
Dir1.Path;提示

End Sub

----
通过以下代码取得鼠标单击增强列表框返回的项目名称:

Private Sub ListView1_ItemClick(ByVal Item As
MSComctlLib.ListItem)

allfname = Item;文件名

dname= CurrentDir&
Item;完整的路径和文件名

sElectmain = ListView1.SelectedItem.Index;文件序号

End Sub

listview控件可有4种不同的视图显示方法,跟“资源管理器”里的“查看”方式相似:(1)无图标;(2)小图标;(3)列表;(4)报表式。    
          使用哪种视图,可由该控件的view属性设置控制。    
          其中“报表”视图用来显示记录数据很适合。    
           
          listview控件包括listItem对象和ColumnHeader对象。    
          本人简单理解为:listItem对象看成数据行;ColumnHeader对象看成列标题。    
          listItem对象(行)有两部分:一部分是图标和简要描述的文本(第1列);另一部分是前者的子项文本信息(第2列,第3列......)。    
   
          而listItems即是对listItem对象集合(所有行)的引用。    
         
          故此,listItems(1)              可以表示为第1行;     
                listitems(1).text         返回第1行第1列的文本值;     
                listitems(1).subItem(1)   返回第1行第2列的文本值。    
   
  【   控件常用属性   】    
   
          [1]view属性    
                该属性有4个值可设定:    
                      1---小图标视图显示    
                      2---列表    
                      3---报表    
                      0---无图标(默认)    
       
          [2]AllowColumnReorder属性    
                值设置.t.时,用户可以用鼠标选中1列拖至其他地方进行重新排列。    
   
          [3]Checkboxes属性    
                设置为.t.时,每一行数据前将显示一复选框。    
          [4]FlatScrollBar属性    
                设置为.f.时控件将显示滚动条。    
          [5]FullRowSelect属性    
                设置为.t.时可以整行地选择数据。    
          [6]GridLines属性    
                设置为.t.时控件将显示网格线。(只作用于“报表”视图)    
          [7]HideColumnHeaders属性    
                设置为.f.时,列标题可视,反之则不可视。    
          [8]HotTracking属性    
                设置为.t.时,鼠标所在行将以高亮度显示。    
          [9]Icons,SmallIcons属性    
                两者设置listview控件视图相关联的ImageList控件中的图片。    
                Icons指明视图为大图标时的关联;    
                SmallIcons指明视图为小图标时的关联。    
        [10]LabelWrap属性    
                设置为.t.时,文本标签超出列宽时可换行。    
        [11]SelectedItem属性    
                返回对所选ListItem对象(行)的引用。    
        [12]Sorted属性    
                当值为.t.时,列表按字母排序。    
        [13]Picture属性    
                指定控件的背景图片,此属性在控件自带属性设置框里设置。    
         
  *****************************************************************    
  【   控件常用方法程序   】    
   
        [1]Add方法    
              添加listItem对象(行)到控件中。    
              语法格式:    
              控件ListItems集合.add(index,key,text,icon,smallIcon)    
        [2]FindItem方法    
              查找并返回对控件中listItem对象的引用。    
              语法格式:    
              控件名.FindItem(string,value,index,match)    
   
  ******************************************************************    
          新建一表单,在表单里拖出一个ListView控件和一个ImageList控件。    
          选中ListView控件,单击右键,选择“ListViewCtrl   Properties”,在General页面框中选中下列复选框:    
          LabelWrap:文本可换行    
          Checkboxes:显示复选框    
          FullRowSelect:整行选定    
           
          清除FlatScrollBar的选定,控件将显示滚动条。  
  **************************************************************    
   
          控件             name属性    
  ListView                 view1    
  ImageList               Image1    
   
  ***************************************************************    
   
          在表单的Init事件中加入下列代码:      
   
          &&&&将ImageList控件图片赋予Listview控件&&&&    
   
        thisform.view1.Icons=thisform.Image1.object    
        thisform.view1.smallIcons=thisform.Image1.object    
   
  ****************************************************************    
   
        在listview控件init事件中加入下列代码:    
   
        &&&初始化ListView控件&&&&    
        &&设置显示为报表视图    
        this.view=3    
        &&添加和设置列标    
        store   this.ColumnHeaders.Add(,"l11","序号",this.Width/7)   to   clm1    
        store   this.ColumnHeaders.Add(,"l12","物资编号",this.width/4)   to   clm2    
        store   this.ColumnHeaders.Add(,"l13","存货名称",this.Width/4)   to   clm3    
        store   this.ColumnHeaders.Add(,"l14","规格",this.width/4)   to   clm4    
        store   this.ColumnHeaders.Add(,"l15","计量单位",this.Width/8)   to   clm5    
        store   this.ColumnHeaders.Add(,"l16","请购数量",this.width/4)   to   clm6    
        store   this.ColumnHeaders.Add(,"l17","使用日期",this.Width/4)   to   clm7    
        store   this.ColumnHeaders.Add(,"l18","请购用途",this.width/4)   to   clm8    
        this.hottracking=.t.       &&鼠标停留行高亮度显示    
   
  ******************************************************************    
   
        将数据表添加到listview控件中显示:    
   
        新建一表单方法程序   refresh_grid,可随时调用刷新数据。    
        在其中加入下列代码:    
   
        L1=thisform.view1    
        L1.listItems.clear   &&清除数据    
        sele   请购表    
        scan    
                &&添加listItem对象第1列图标和文本。    
                store   L1.listItems.Add(,,序号,,1)   to   bbb    
                &&添加第2,3...列文本    
                store   alltrim(物资编号)   to   bbb.subitems(1)    
                store   alltrim(存货名称)   to   bbb.subitems(2)    
                store   alltrim(规格)   to   bbb.subitems(3)    
                store   alltrim(计量单位)   to   bbb.subitems(4)    
                store   请购数量   to   bbb.subitems(5)    
                store   使用日期   to   bbb.subitems(6)    
                store   alltrim(请购用途)   to   bbb.subitems(7)              
        endscan    
   
   
        注:若字段值为.null.时,添加时将出现错误提示。    
                请自行设置用函数加以判别。为.null.时可以空值添加。    
   
  ************************************************    
   
        如何返回选定值:    
   
      L1=thisform.view1    
      L1.selectedItem.text   &&返回选定行第1列文本值    
      L1.selectedItem.index   &&返回选定行的位置    
      L1.listItems(x).subItems(y)   &&返回第x行,第y+1列文本值    
   
  *****  
   
      如何用用命令设置复选框状态:    
   
      thisform.view1.listItems(x).checked=.t.    
      &&第x行复选框选定    
   
  ******************************************    
   
      选定复选框时发生的事件itemcheck:    
   
      LPARAMETERS   item    
      if   item.checked=.t.&&判定当复选框选中    
            要执行的语句    
      else    
            要执行的语句    
      endif      
   
      &&清除所有数据    
      thisform.view1.listItems.clear    
       
      &&清除选定行    
      L1=thisform.view1    
      L1.listitems.remove(L1.selectedItem.index)    
   
      得知所有行的总数:    
      L1.listitems.count

时间: 2024-10-11 22:14:56

LISTVIEW使用指南 (VB6)的相关文章

【Visual Basic】vb6的ListView控件,对Access2003数据库的增删改查,判断是否有中文、多窗体操作

vb6对Access2003数据库的增删改查并不复杂,可以通过ado对象轻松完成,下面举个小例子,同时说明vb6中的ListView控件的使用.虽然在<[Visual Basic]列表控件ListView的增删改查.模态对话框.禁止窗口调整大小>曾经对VB.NET的ListView控件进行详细的说明,但是证明微软就是个坑爹货,vb6对于ListView实现的代码居然跟VB.NET有着彻底的不同,似乎换了一门语言似得的.改代码什么的最讨厌的. 首先,在vb6生成的工程文件夹中有着一个db1.md

Android修行笔记(五):ListView 良好编程指南

构成Android应用的一个重要的UI构件就要算ListView了,我们项目中用得很多,所以总结了以下的经验进行分享探讨 1.重用Adapter getView函数中的ConvertView 列表的每一行Item通常都是可复用的,重用可以避免多次创建,让滚动更加顺滑. (注意:2.3系统在复用View的时候有些状态会被保留,比如GONE的状态,所以在getView中重用convertView时要对Visibility属性重新进行设置) 2.使用ViewHolder来保存通过findViewByI

(翻译) Android ListView 性能优化指南

本文翻译了Lucas Rocha的Performance Tips for Android’s ListView.这是一篇关于介绍如何提升ListView性能的文章,非常的优秀.使得我拜读之后,忍不住将其翻译.本文采用了意译的翻译方式,尽可能的保持原文中要表达的内容.但是,任有几处翻译存在一些异议.请读者原谅.如果你对文章的内容有兴趣,请移步到我的blog,地址如下: 地址: http://kohoh1992.github.io/PerformanceTipsForAndroidListView

vb6加载时提示出错,窗体log文件中错误信息为:控件 XX 的类 MSComctlLib.ListView 不是一个已加载的控件类。

解决办法:单击[工程] -- [部件] 添加此Microsoft Windows Common Controls-6.0 (SP6)部件,如果列表中没有,浏览到~\project\包\Support中 添加MSCOMCTL.OCX此部件,如果还不行,需要注册一下此部件,然后保存重启电脑或者vb.如何注册:参考此链接 http://jingyan.baidu.com/article/c910274bfea203cd361d2db9.html

购买李宁Cocos2d-x套餐,送最新出的《Cocos2d-x游戏实战指南》签名书一本

活动时间:2016-10-18至2016-11-30 通过本套餐,可完全了解Cocos2d-x 3.x的相关技术,以及掌握C++语言,并具有一定的项目实战经验. Cocos2d-x游戏开发套餐:http://edu.51cto.com/pack/view/id-114.html <Cocos2d-x游戏实战指南>封面 本书月底出版,触控科技副总裁Jane.微软开放体验和合作事业部开发技术顾问梅颖广.51CTO学院运营总监曹亚莉.哈尔滨工业大学  王峥  联袂推荐 目录 第1章     初识CO

【最后一篇API译文】Android开发-API指南- Contacts Provider

Contacts Provider 今年加入了某字幕组,加之杂事颇多,许久未添新文了,惭愧之极. 在听闻 Google 即将重返中国后,近日忽又发现官方网站正在放出 API 中文版,比如本文.当然不是大家所译,但至少句子结构较通顺,窃以为比 MSDN 中文版好些.虽有些生硬(比如将 Provider 译为“提供者”,有趣得紧),但好在前无古人,也许 Google 自此便统一了自己的中文术语也未可知.能让更多的国人精确领悟 Android 的精髓,肯定是好事,希望 Google 继续坚持. 这事应

Volley使用指南第三回(来自developer.android)

继第二篇之后,再来Volley使用的教程的第三篇,有些翻译我是根据自己的理解,可能有错误的地方,还请多多包涵. 标准请求 这一回课将会告诉你Volley能够完成的3种请求类型 1.StringReqeust:请求一个String类型的返回,具体看Volley使用指南第一回. 2.ImageRequest:请求图片. 3.JsonObjectRequest和JsonArrayRequest (这两个都是JsonRequest的子类):请求在response中返回一个json object类型. 如

WP8.1学习系列(第十一章)——中心控件Hub开发指南

在本文中 先决条件 什么是中心控件? 添加中心控件 将分区添加到中心 添加交互式分区头用于导航 将展示磁贴添加到中心 使用窄应用中的垂直中心 借助中心使用语义式缩放视图 摘要和后续步骤 重要的 API Hub HubSection SemanticZoom 使用 Hub 控件创建一个进入应用的入口页.Hub 控件在丰富的平移视图中显示内容,这样用户一眼就能看见新鲜有趣的内容,从而吸引他们深入了解你的应用中的更多内容. 先决条件 查看并了解 Windows 导航模式. 查看并了解中心控件指南. 我

《Android学习指南》文件夹

转自:http://android.yaohuiji.com/about Android学习指南的内容分类: 分类 描写叙述 0.学习Android必备的Java基础知识 没有Java基础的朋友,请不要先看Android的课程,这样会非常累. 1.Android学习指南基础篇 对于有Java基础的朋友,能够通过本分类60讲左右的课程,打下比較坚实的基础. 2.Android学习指南项目实训篇 对于学过"1.Android2.2学习指南基础篇"的朋友,能够通过本分类项目的联系,加深对基础