窗体上有ListView1、ListView2、ListView3
如何同时选中ListView1及ListView2的某项并把它们同时添加到ListView3的某一行中

解决方案 »

  1.   

    listview控件
         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