zoukankan      html  css  js  c++  java
  • VB ListView

    引用:http://hi.baidu.com/debugest/blog/item/5a7a9127baf46b08918f9dff.html

    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

  • 相关阅读:
    LCA算法总结
    【福利】论机房如何关闭方正软件保护卡
    codevs 2190 有理逼近
    用C语言的rand()和srand()产生伪随机数的方法总结
    float,double等精度丢失问题 float,double内存表示
    #incldue<cctype>函数系列
    poj 2348 Euclid's Game 题解
    poj 2240 Arbitrage 题解
    洛谷 p1352 没有上司的舞会 题解
    BZOJ 1093 最大半连通子图 题解
  • 原文地址:https://www.cnblogs.com/sode/p/2266118.html
Copyright © 2011-2022 走看看