随笔 - 6  文章 - 129  trackbacks - 0
<2024年4月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

常用链接

留言簿(14)

随笔档案(6)

文章分类(467)

文章档案(423)

相册

收藏夹(18)

JAVA

搜索

  •  

积分与排名

  • 积分 - 815439
  • 排名 - 49

最新评论

阅读排行榜

评论排行榜

PFC中关于TreeView的用法讲解

转自:http://www.pb9.com.cn/showtopic-190.html

PFC中关于TreeView的用法讲解

(lily_banana)

u_tvs

描述:
基于 TreeView 可视用户对象祖先。该对象采用 数据存储(DataStores)显示TreeView 的数据。
U_tvs 是一个自更新的对象。
对应的库:
PFCMAIN.PBL
PFEMAIN.PBL
对象关系:
Object relationships
    PFC 可视用户对象被设计用于从w_master继承来的窗口。U_tvs 也用于:
    m_tv
    n_cst_infoattrib
    n_ds
    n_cst_luw
    n_cst_tvsrv
    n_cst_tvsrv_levelsource
    n_cst_print
用法:
在窗口中用该可视用户对象代替PowerBuilder的 TreeView 控件。 U_tvs 事件的脚本可以和PFC的菜单进行集成。
要使用 u_tvs:
1    在窗口中添加一个u_tvs用户对象控件。
2    根据需要使TreeView 的服务可用:
this.of_SetPrint(TRUE)
this.of_SetLevelSource(TRUE)
this.of_SetBase(TRUE)
3    为树的每一层指定数据源:
String  ls_sql
Integer  li_return
   
ls_keys[1] = "dept_id"
    this.inv_levelsource.of_Register(1, "dept_name", "", "d_deptlist", SQLCA, "")
      ls_keys[1] = "emp_id"
this.inv_levelsource.of_Register(2, "emp_lname", ":parent.1.dept_id",  &
      "d_empbydept", SQLCA, "")
4    根据需要为树脂定其余的显示信息:
this.inv_levelsource.of_SetPictureColumn(1, "1")
this.inv_levelsource.of_SetSelectedPictureColumn(1,"2")
this.inv_levelsource.of_SetPictureColumn(2, "4")
this.inv_levelsource.of_SetSelectedPictureColumn(2, "5")

5    检索 TreeView的第一行:
this.event pfc_populate(0)
6    扩展pfc_Retrieve 事件使检索参数生效:
Any  la_args[20]
Integer  li_level

IF IsValid(inv_levelsource) THEN
            li_level = this.of_GetNextLevel(al_parent)
            this.inv_levelsource.of_GetArgs(al_parent, li_level, la_args)
END IF
Return this.of_Retrieve(al_parent, la_args, ads_data)

7    根据需要调用u_tvs 的其他函数。
要获取关于TreeView 的更多信息,参见《PowerBuilder User's Guide》

n_cst_tvsrv_print

描述:
TreeView 打印服务

对应的库
PFCAPSRV.PBL
PFEAPSRV.PBL

用法:

要使用该系统:

1    调用u_tvs of_SetPrint 函数激活该服务:
tv_1.of_SetPrint(TRUE)
2    调用of_PrintTree 函数来打印 TreeView 数据:

String  ls_levelpicts[10]
String  ls_levelselpicts[10]

ls_levelpicts[1] = "dept.bmp"
ls_levelpicts[2] = "emp.bmp"
ls_levelselpicts[1] = "deptsel.bmp"
ls_levelselpicts[2] = "empsel.bmp"
tv_1.inv_print.of_PrintTree(0, TRUE, ls_levelpicts, ls_levelselpicts)

of_Register 函数:
  语法1 通过一个DataWindow 对象来显示数据。
描述:
    通过检索DataWindow对象的行来建立TreeView的各级数据层
范围:
Public
语法:
tvcontrol.instancename.of_Register ( level, labelcolumn, retrievespec,    dwobject, trans, filterspec )

参数描述:
tvcontrol        u_tvs-based TreeView 控件的实例
instancename    n_cst_tvsrv_levelsource的实例 ( u_tvs 的确省值为 inv_levelsource)
level            Integer 指定TreeView 数据的层次及数据
labelcolumn    String 指定u_tvs 用于TreeView项标签的dwobject 的列名。
retrievespec    String  包含用于dwobject 检索条件
dwobject        String 指定用于数据检索的 DataWindow 对象
trans            N_tr 用于检索dwobject的事务对象。如果该参数未指定,则dwobject必须已含有数据。
filterspec          String 包含需要的过滤条件

返回值
Integer. 具体如下:
 1  成功
 -1  参数有效性错误
 -2  Dwobject 没有指定键列(key columns)
 -3  上一层被标记为循环。
 -4  Column level datatype was not in the data source
 -5  为数据源设置事务对象出错
 -7  Cache 注册错误

用法:
    TreeViwe的每一层调用该函数一次。
检索参数的格式如下:
:scope.level.column

where:

 Scope 指定层(Level)或者父层(Parent):
 Level  绝对层数
 Parent  和当前层相关的数

 根据Scope指定的数的性质不同,Level 来制定一个绝对或相对层数。
Scope 指定    Level 指定
Level
    你指定的绝对数。例如::level.1.emp_name 表示检索参数来自于祖先的-1层的emp_name 列

Parent    你指定的项相对于当前层的值。例如, :parent.2.emp_name 表示检索参数来源于上两层祖先的emp_name 列

 Column 指定含有用于检索参数值的DataWindow 对象的列名



of_SetPictureColumn 函数:

描述:
指定未选中时的图标
范围:
Public
语法:
tvcontrol.instancename.of_SetPictureColumn ( level, column )

参数描述:
tvcontrol        u_tvs-based TreeView 控件的实例
instancename    n_cst_tvsrv_levelsource的实例 ( u_tvs 的确省值为 inv_levelsource)
level            Integer 指定被设置图标的层号
column        String 指定下述之一:
 u_tvs 用于找到图片的DataWindow 对象的列名,该列可以包括一个文件名或者一个值,指示 u_tvs 来找到 TreeView的图片序列号
 值, 指示 u_tvs 来找到 TreeView的图片序列号

返回值:
Integer. 1,成功;-1,失败。

用法:
调用该函数前需要调用of_Register函数


posted on 2010-07-04 10:40 Ke 阅读(768) 评论(0)  编辑  收藏 所属分类: powerBuilder

只有注册用户登录后才能发表评论。


网站导航: