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 阅读(796)
评论(0) 编辑 收藏 所属分类:
powerBuilder