翰文个人计算机学习网
  • 翰文快讯
  • 翰文PC快讯
  • 综合软件区
  • 操作系统
  • 注册表解析
  • Windows系列
  • Unix/Linux
  • 其他系统
  • 应用软件
  • 微软MS Office
  • WPS Office
  • 多媒体软件
  • 图像处理
  • Photoshop
  • Painter
  • Illustrator
  • CorelDRAW
  • 三维空间
  • AutoCAD
  • 3DMAX
  • 3DMAYA
  • 硬件资源
  • 攒机指南
  • 硬件超频
  • 维修指南
  • 网络资源
  • 在线通讯
  • 网上冲浪
  • 浏览器中心
  • 网络故障解析
  • 病毒资料
  • 病毒通报
  • 病毒防治
  • 病毒常识
  • 黑客技巧
  • SQL/MySQL
  • Oracle
  • Delphi
  • 编程资源
  •  C/C#/C++/VC++/VC.NET
  •  Basic/VB/VB.NET/VBScript
  •  FoxBasic/FoxPro/VF/VF.NET
  •  Java/JavaScript
  • PowerBuilder
  • 热门词:
  • 翰文计算机学习网首页
  • >
  • PowerBuilder
  • >
  • PB6.5中TreeView 控件的使用技巧
  • PB6.5中TreeView 控件的使用技巧

  • 资源来源:
  • HW-PCS.ORG
  • 资源作者:
  • 翰文计算机学习网
  • 人气指数:
  • [4255]
  • 关键词:过滤

      PowerBuilder中的reeView 控件为树状游览,类似于WINDOWS的资源管理器,其特点是信息项呈树状层次结构,能更清晰地表现主、细目关系,操作非常方便。在应用中可将其与DataWindow 配合使用,一个提供信息的分类体系,一个提供具体信息,达到珠连碧合的奇妙效果。它特别适用于多级信息的分类检索,是多级菜单所无法比似的,它的表现形式深受程序设计人员和广大用户的喜爱,在许多应用软件中都能看到她的英姿。
      在PowerBuilder下,TreeView 控件的应用较其它控件要复杂得多,刚接触它时往往有些不知所措。但如果将它的机理搞清楚,掌握它也不是很难的事。下面我结合长白公司图书分类检索的实例,把TreeView 控 件的使用方法和大家探讨一下。

      一、应用TreeView 控件的一般步骤

      1、建立一个应用,并设好与数据库的接口,这是操作数据库的前提。
      2、在应用中建一应用窗口W_1,在其上加入二个名为dw_3和dw_4的datawindow控制对象和一个名为TV_1的TreeView对象。
      3、 修改DW_3属性
      General:把Datawindow object name填写一个已存在的名为DW_date的datawindow(注意:它与datawindow控制对象是不同的),用于生成树视图项,将其Visible项设为不可见。
      4、 修改DW_4属性
      General:把Datawindow object name填写一个已存在的名为DW_TS的datawindow对象,用于显示查询出的具体内容。
      5、 编辑TV_1的属性
      TreeView的树视图项不能直接编辑,必须在Script中编写程序。
      Picture:在Picture Name中加入四个不同的图标,用于代表树视图中的两个层次(一、二级)、两种状态(未选、选中)。
      General:可根据具体应用设定是否选中,其中:
      Delete Items:运行中是否允许删除表项。
      Disable PragDrog: 运行中是否允许拖放表项。
      Edit Labels: 运行中是否允许单击表项来改变表项的标题。
      Show Buttons:是否在表项放显示+-按钮,有示相对的扩展和收缩。
      Hide Selection:当该控件失去焦点时,选中项是否以高亮度显示。
      Show Line:表项间是否加一竖线。
      Lines At Root:所有根层表项是否用竖线连接。
      Indentation:子表项相对于父表项的向右缩进度。
      6、 编写TV_1的Script
      这里是TreeView控件的关键,也是难点。

      二、TreeView 控件的信息构成及创建

      树视图项TreeViewItem是TreeView 控件的基本信息单位,树视图项的生成一般有二种方法,一种是先生成根层视图项,再在应用中动态生成下级视图项,另一种是把全部树视图项一次和成。两种方法各有优点,请根据具体情况选用,本例中采用后一种方法。
      1、 树视图项TreeViewItem的主要属性
      Label:String 型,树视图项的显示信息。
      Data:Any型,树视图项的内部值。
      Level:Integer型,树视图项在树视图中级别。
      Children:Boolean 型,它决定该项是否有下一层(如图中书名)。
      PictureIndex:Integer 型,该项非选中时所用的图标在图标队列中的编号。
      SelectedPictureIndex:Integer型,该项选中时所用的图标在图标队列中的编号。
      2、 生成TreeViewItem项用到的函数
      InsertItemFirst():将加入项作为第一项
      InsertItemLast():将加入项作为最后一项
      InsertItem():将加入项插入到指定项的后面
      InsertItemSort():按顺序放置。
      3、 TreeView的常用事件
      Constructor: 该事件在控件创建时触发,可在这里构造TreeViewItem。
      Click:单击TreeViewItem项时,执行查询程序。
      Double Click: 双击TreeViewItem项时,执行查询程序。
      ItemPopulate 事件:该事件在某TreeViewItem项首次展开时触发, 触发的同时系统会将 该TreeViewItem项的句柄通过参数handle 传递过来。它主要用来生成对应项的下层信息项。主要用于第一种方法。

      三、 事件代码

      1、树视图控件TV_1的constructor事件代码 wanqi 1999.6.28
      integer li_rowcount,li_row
      string li_current_dn,li_last_dn,li_current_ei,li_last_ei
      //声明二个树视图的实例变量
      treeviewitem itvi_level_one,itvi_level_two
      //long ii_h_l_one
      //long ii_h_l_two
      dw_3.settransobject(sqlca)//dw_3
      为隐含的数据窗口,存有生成树的数据
      li_rowcount=dw_3.retrieve()//行数
      dw_3.setsort("lb,pm")
      dw_3.sort()
      //生成树视图的各级树视图项
      for li_row=1 to li_rowcount
      li_current_dn=dw_3.object.lb[li_row]
      //DW_3对象中"LB类别"
      li_current_ei=dw_3.object.pm[li_row]
      //DW_3对象中"PM品名"
      if isnull (li_current_ei) then
      li_current_ei=""
      end if

      if li_current_dn li_last_dn then
      //IF LB不与一级视图项重复
      //设置一级树视图项
      itvi_level_one.label=dw_3.object.LB[li_row]
      //视图项的显示信息
      itvi_level_one.level=1 //级别
      itvi_level_one.data=li_current_dn
      //视图项的内部信息
      itvi_level_one.pictureindex=1
      //没选中时所用的图标序号
      itvi_level_one.selectedpictureindex=3
      //选中时使用的图标序号
      itvi_level_one.children=(li_current_ei ’ ’)
      //树视图是否有下一级
      ii_h_l_one=this.insertitemlast(0,itvi_level_one)
      //将项加入到一级树的最后一项
      end if
      //设置二级树视图项
      if li_current_dn li_last_ei then
      if li_current_ei’ ’ then
      itvi_level_two.label=dw_3.object.pm[li_row]
      itvi_level_two.level=2
      itvi_level_two.data=li_current_dn
      itvi_level_two.pictureindex=2
      itvi_level_two.selectedpictureindex=4
      itvi_level_two.data=li_current_ei
      itvi_level_two.children=false
      ii_h_l_two=this.insertitemlast
      (ii_h_l_one,itvi_level_two)
      //将项加入到二级树的最后一项
      end if
      end if
      li_last_dn=li_current_dn//设比较项
      li_last_ei=li_current_ei
      next
      2、tv_1控件的clicked事件代码
      string s1
      treeviewitem ii
      this.getitem(handle,ii)
      s1=string(ii.label)
      choose case ii.level
      case 1
      //过滤类别
      dw_4.setfilter("lb=’"+s1+"’")
      dw_4.filter()
      case 2
      dw_4.setfilter("pm=’"+s1+"’")
      dw_4.filter()
      //书名
      end choose

    感谢您对翰文计算机学习网的支持

  • 关于我们
  • 联系方式
  • 成功案例
  • 技术报价
  • RSS索引
  • 网站地图
  • 翰文电脑学习网
  • MSN:LNDDYGYC9@HOTMAIL.COM Powered by 翰文个人计算机学习网 版权所有,未经允许不得转载
    ICP备案号码:[沪ICP备12020678号] Copyright 2008-2020 HW-PCS.ORG, All Rights Reserved.