分享
 
 
 

PB中TreeView控件使用技巧

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有