`
JAVA海洋
  • 浏览: 596533 次
  • 性别: Icon_minigender_1
  • 来自: 太原
社区版块
存档分类
最新评论

PB中TreeView控件使用技巧

阅读更多

PowerBuilder中的TreeView 控件为树状游览,类似于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

分享到:
评论

相关推荐

    pb treeview控件的使用技巧

    pb treeview控件的使用技巧,控件的建立,以及利用数据库中的数据建立!

    PB中TREEVIEW控件的使用技巧

    适合于初学者的学习资料

    PB中TreeView控件的深度优化搜索算法程序

    PB中TreeView控件的深度优化搜索算法程序

    PB treeview 控件设置背景图片

    设置PB中树控件的背景为图片源码,Demo代码使用PB11.5制作

    PB treeview

    treeview控件TreeView详解(转载)好文章大家一起分享! 1、设置背景色 #Define TVM_SETBKCOLOR 4381 Declare Long SendMessage In User32 Long HWnd,Long wMsg,Long wParam,Long Lparam =SendMessage(Thisform....

    PB 编程技巧100例(CHM)

    TreeView (18)在PB的TreeView控件中实现自动查询 周剑峰 Datawindow (17)PowerBuilder数据窗口编程技巧十则 蔡伟龙 System (16)如何在POWER BUILDER中使用WINSOCK控件 达伟春 OTHER (15)在PB打印中实现...

    pb版带复选框的treeview控件

    pb版本为8.0,采用pb自带的checkboxs属性,适应多层树形结构。

    PB带复选框的树形控件

    PB带复选框的树形控件PB带复选框的树形控件PB带复选框的树形控件PB带复选框的树形控件PB带复选框的树形控件PB带复选框的树形控件PB带复选框的树形控件

    pb treeview 用于权限控制

    资源参考资料: ... 在此两者的基础上修改了一下,实现了选择父节点,则选中下面所有子节点,取消父节点,则取消下面所有子节点. 子节点单独取消,当没有子...准备把此控件用于权限控制到菜单的系统中,当然也可控制到独立的控件.

    基于PB的数据敏感TreeView控件的组件化开发 (2003年)

    介绍了如何利用COM组件技术和Power Builder集成开发环境,制作显示关系数据库中具有层次关系数据的Tree View控件。文中重点阐述了Power Builder组件的制作方法,以及实现数据敏感的基本思想与规范。另外,对一些典型...

    pb8动态创建树和菜单,pb遍历生成菜单,树

    pb8源码,动态创建树和菜单,及对树和菜单的增、删、改 效果图:http://album.hi.csdn.net/app_uploads/liubocy/20081117/021309093.p.jpg?d=20081117021615546 请注释掉tv控件的selectchanged事件代码.

    Pb_xml.zip_icecza_pb web_pb 6.5 安装使用_pb解析XML_xml

    cb_5和cb_6改变文件名变量ls_filename , ls_xslfilename ,以反映不同的目录上面使用 以下是运行时会发生什么变化的范例: 当您打开工作表, XML解析器: XML解析器 加载文件:在这里,您可以只加载一个...

    pb+sql server 2000 数据库开发

    用SQL SERVER 建立数据库 在PB 中建立登录界面和注册界面 使用TREEVIEW控件和游标

    uo_treeview树形控件对象

    树形控件对象,可用于bom结构的生成,powerbuilder的代码。

    pb高级编程原马

    treeview控件 treeview控件实例源代码数据库及数据库窗口 为调用数据库开发的数据库窗口源代码学生管理系统 学生管理应用软件源代码

    PowerBuilder 12.6入门视频教程下载(初级)

    --------------初级---------------------- 01.初识PowerBuilder 02.PowerBuilder开发环境 03.PowerBuilder编程概述 ...20.Treeview控件 21.递归创建无限制级别树形结构 22.完善递归算法+ListBox控件 23

    关于自定义界面的方案(EasyGrid-V6)

    时间又紧就一直没有做了,前段时间在做一个系统时,觉得有必要采用灵活多 变的自定义界面方式来实现(觉得还是delphi这些方面强,pb可能不好实现), 从技术上来说采用控件在窗口上拖拉来实现也不 会太难。...

Global site tag (gtag.js) - Google Analytics