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控件的使用技巧”是指在PowerBuilder(PB)环境中,对TreeView控件的运用方法和优化策略。PowerBuilder是一款流行的、基于事件驱动的.NET和Java应用开发工具,其中的TreeView控件是用于显示...
### PowerBuilder中TreeView控件使用技巧详解 #### 一、前言 在PowerBuilder开发工具中,TreeView控件因其能够直观地展现多层次的数据结构而受到广泛欢迎。它可以帮助用户更好地理解复杂的分层信息,比如组织架构...
在PowerBuilder(简称PB)开发环境中,TreeView控件是一种常用的数据展示组件,它以树状结构显示数据,便于用户管理和浏览具有层次关系的信息。然而,对于大规模数据集,TreeView控件的性能问题变得尤为突出,尤其是...
然后,我们将使用PB的图形函数来处理这张图片,并将其设置为TreeView控件的背景。 以下是一个基本的步骤和示例代码: 1. 引入必要的库: 在代码开始部分,我们需要引入处理图像的库,例如GDI+库。在PowerBuilder...
pb12 treeview datawindow 增加了两个事件,分别执行点击层时执行事件;以及执行点击明细事件
TreeView控件在用户界面设计中常见,因为它提供了一种直观的方式来展示具有父子关系的数据。 1. **DataWindow Treeview 基础** - TreeView控件允许用户以层级形式查看数据,每个节点可以有子节点或父节点。 - 在...
总之,这个项目是关于在Visual C++环境中使用TreeView控件,并与PowerBuilder的源代码相结合,以实现更复杂的用户界面和功能。这涉及到对MFC的深入理解,以及掌握如何在不同编程语言之间进行接口设计和通信的知识。
在C#编程中,TreeView控件是一个非常常用且强大的组件,它允许程序员创建层次结构的显示,类似于Windows资源管理器中的文件系统结构。本资源是一个简单的实现,教你如何利用TreeView控件来展示计算机的磁盘信息,...
7. DeleteItems 属性:布尔类型,表示是否允许用户在控件中使用 Delete 按钮来删除项目。该属性的缺省取值为 False。 8. DisableDragAndDrop 属性:布尔类型,表示是否禁止用户进行拖拉操作。该属性的缺省值为 True...
在PowerBuilder(PB)开发环境中,TreeView控件是一种常见的用户界面元素,用于显示层次结构的数据。在本案例中,我们关注的是"pb版带复选框的treeview控件",这意味着我们在一个TreeView控件上添加了复选框功能,...
标题 "PB 的treeview" 指的是PowerBuilder (PB) 中的Treeview控件,这是一种在用户界面中呈现层次结构数据的图形元素。在PowerBuilder应用程序中,Treeview控件通常用于显示目录结构、数据库记录的层级关系或其他...
treeview控件TreeView详解(转载)好文章大家一起分享! 1、设置背景色 #Define TVM_SETBKCOLOR 4381 Declare Long SendMessage In User32 Long HWnd,Long wMsg,Long wParam,Long Lparam =SendMessage(Thisform....
"PB带复选框的树形控件"是指在PowerBuilder中,通过自定义或者使用特定库实现的,具备节点前带有复选框的树形控件。用户可以通过点击复选框来选择或取消选择树形结构中的某个节点,这种功能在数据过滤、设置选择、...
TreeView (18)在PB的TreeView控件中实现自动查询 周剑峰 Datawindow (17)PowerBuilder数据窗口编程技巧十则 蔡伟龙 System (16)如何在POWER BUILDER中使用WINSOCK控件 达伟春 OTHER (15)在PB打印中实现...
PB提供了Treeview控件用于展示树形结构,然而,实际的树形结构构建仍需通过编程实现。具体而言,这涉及到数据的动态加载和层级关系的计算。在PB中,DataWindow是用于展示和操作数据的核心组件,通过适当的配置和编程...
本篇将详细讲解如何在PB9中使用数据窗口创建和操作树型控件。 首先,理解树型控件的基本概念是关键。在PB9中,树型控件是由一系列可展开和折叠的节点组成的控件,每个节点可以包含子节点,形成一个树状的结构。用户...
Treeview控件通常用于展示层次结构的数据,比如文件系统、组织结构或菜单结构。它由节点组成,每个节点可以有子节点,通过展开和折叠来显示或隐藏子层级。用户可以通过树形视图轻松地导航和操作这些结构化数据。 ...
资源参考资料: ... 在此两者的基础上修改了一下,实现了选择父节点,则选中下面所有子节点,取消父节点,则取消下面所有子节点. 子节点单独取消,当没有子...准备把此控件用于权限控制到菜单的系统中,当然也可控制到独立的控件.
### pb tree中文详细说明 #### 一、简介 在PowerBuilder开发环境中,树形视图(TreeView)是一种非常实用的控件,它可以帮助开发者构建出类似...希望本文能够帮助您更好地掌握PowerBuilder中TreeView控件的应用技巧。
"uo_treeview树形控件对象"是一种在PowerBuilder应用程序中使用的用户界面组件,它以树状层次结构显示数据,通常用于展现具有层级关系的信息,如文件系统、组织架构或BOM(Bill Of Materials)结构。BOM结构是制造业...