- 浏览: 280140 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
sunlin:
水文 其他erp就没这样的问题? 不能单方面拿sap说 ...
【转】揭秘SAP在华真相:天价收费与用户之灾 -
zjut_xiongfeng:
用当前日期所在月的第一天,比如2010-7-30的当前月第一天 ...
pb函数库之日期、时间函数 -
550627069:
你好!问下 在PB中显示当前日期的前一个月 应该怎么做?求教
pb函数库之日期、时间函数
树形结构在Windows环境中被普遍应用,它以简捷的界面深受用户喜爱。但在数据库开发中面对层次多、结构复杂的数据,如何快速地构造树形目录呢?
实现关键技术
在PowerBuilder所提供的控件中包含了Treeview控件,但树的具体形成还需用户编写脚本实现,即它的列表项要在程序中动态添加,而这些列表数据通常由用户已录入在数据库中,并作为数据库维护的一项内容。
为了能快速实现数据库的树形结构,我们可以采用编码法,即利用编码表来实现。
编码表的基本字段包括编码和编码名称,其编码规则是以数字、字母的位数来区分不同层次,同一层编码位数相同,层次按位数递增,程序通过判断编码位数来决定所在层数。
例如:第一层为10~99两位,第二层为1010~1099四位,用户需要做的是先要设计树的结构和对应编码,并把相应名称进行录入,然后程序在读取这些数据时形成树。
编码法的优点是可以适应任何复杂的层次数据,实现方法简单,且树内容有变动时,无需更改程序代码。
范例程序与主要代码分析
我们以建立一个城市名称的树形结构为例,来说明编码法的应用。
首先建立编码表:city_tab(行政编码、行政名称),其对应的数据窗口是dw_tree(处于隐藏状态),对应树控件为tv_1。
接着在录入界面下输入各城市名称、区域名称及对应编码,最后在窗口的OPEN事件上输入以下代码:
long tvi_root,tvi_next,tvi_next1,tvi_next2,tvi_root1,currenthandle,currentnext
int i,j,z,k
string city_bm,city_name
treeviewitem tvi
//定义一个树形数据类型的变量
tv_1.setredraw(false)
dw_tree.settransobject(trooptrans) //连接数据库
dw_tree.retrieve()
i=dw_tree.rowcount()
j=1
//定义树形变量的属性,设置根目录的标签,若在编码表中有此根目录,则不用在此生成
tvi.label="城市"
//生成根目录
// 目录未打开时的图片索引,此图片可在树形控件中设定
tvi.pictureindex=1
//目录打开时的图片索引
tvi.selectedpictureindex=3
tvi_root=tv_1.insertitemlast(0,tvi)
do while j<=i
//从隐含的编码数据窗口检索数据,第一行开始取区域内码,因为编码表按编码序排,所以可自动按序建层次
city_bm=dw_tree.getitemstring(j,"city_bm")
city_name=dw_tree.getitemstring(j,"city_name")
//取区域名称
k=len(city_bm)
z=int(k)//取内码的位数
choose case z
case 2
tvi.label=city_name
//把编码值赋给tvi
tvi.data=city_bm tvi.pictureindex=2
tvi.selectedpictureindex=3
//以根项目为父项目,插入第二层项目,以后凡是检索到位数是二的,均在此生成二层目录
tvi_root1=tv_1.insertitemlast(tvi_root,tvi)
case 4
//以后凡是检索到位数是四位,均生成第三层目录
tvi.label=city_name
tvi.data=city_bm
tvi.pictureindex=2
tvi.selectedpictureindex=3
tvi_next=tv_1.insertitemlast(tvi_root1,tvi)
end choose
j=j+1
loop
tv_1.setredraw(true)
currenthandle=tv_1.finditem(roottreeitem!,0)
//查找根目录下的第一项目
tv_1.eXPanditem(currenthandle) //缺省打开此项目
图1
图1是运行此段程序后形成的树形结构,该程序在Windows 98、PowerBuilder 6.5下运行通过。
发表评论
-
关于pb游标的使用
2010-08-19 09:58 8973提到游标这个词,人们 ... -
如何将COLUMN的显示风格在EDIT、DDDW、DDLB之间相互切换:
2010-08-19 08:45 1594//如何将COLUMN的显示风格在EDIT、DDDW、DDLB ... -
pb从数据窗口获得数据的方法总结
2010-08-19 08:40 1919通过PowerBuilder的数据窗 ... -
在PB中如何动态注册ACCESS的ODBC数据库连接
2010-08-18 09:28 2987在PB中如何动态注册ACCESS的ODBC数据库连接 //获 ... -
datawindow的参考手册
2010-08-18 08:24 891http://www.docin.com/p-63792034 ... -
sap powerbuilder 接口
2010-08-10 13:40 1622//Declaration String ls_app_se ... -
权限设计的探讨
2010-08-06 16:13 1353但凡涉及多用户不同权限的网络或者单机程序,都会有权限管理的问题 ... -
数据管道的用法
2010-04-22 08:58 1469我们首先看看数据管道 ... -
使用PowerBuilder同时访问多个数据库
2010-04-21 16:00 1329某个客户应用可能需要在同一窗口同时访问两个服务器上的两个不同种 ... -
优化你的PowerBuilder程序
2010-04-21 15:50 1026一段程序,完成了所需要的功能固然重要,但是提高执行效率,提高代 ... -
Power Builder 中动态SQL语句的写法
2010-04-16 10:49 1575PowerBuilder是目前最流行的数据库开发工具之一。Po ... -
Datawindow每页显示固定行
2010-04-14 18:52 971使Datawindow每页显示固定行 ---- 第一步:增加 ... -
日期计算函数
2010-04-11 14:00 917Day() 功能得到日期型 ... -
最小化,最大化,正常化窗口
2010-04-01 10:46 931This statement minimizes the Da ... -
datawindow 技巧
2010-04-01 09:08 6127网上看了很多datawindow的技巧,找了很多的例子,发现网 ... -
PowerScript – 常用函数和语句 -文件操作
2010-04-01 08:51 1097文件操作在程序设计中是不可缺少的。可以用文件函数来打开一 ... -
数据安全检测
2010-03-30 18:39 894--------------of_buildselect ... -
sqlca.sqlcode的数值含义
2010-03-29 16:23 1702如果一个 SQL 语句发生了错误,那么 sqlca.sq ... -
pb函数库之日期、时间函数
2010-03-25 09:59 2744Day()功能得到日期型数据中的号数(1到31之间的整数值 ... -
MESSAGE传递的机制及实例
2010-03-23 09:19 708MESSAGE是PFC消息传递的一个全局变量,是一个通用的数据 ...
相关推荐
1. **自定义控件**:PB允许开发者创建自己的控件,通过编写代码实现树形结构的动态加载和交互功能。这通常涉及对控件事件的响应,如点击节点、展开/折叠节点等。 2. **使用标准控件**:PB自带的Tree control可能被...
通过拖放和定制,开发者可以快速创建各种数据展示样式,如表格、图表、树形结构等。数据窗口的灵活性使得它可以适应不同的数据库结构和查询需求。 在课程设计中,学生可能需要完成以下任务: 1. **需求分析**:确定...
在PowerBuilder中,可以通过编码法来快速实现数据库树形结构。编码法的核心思想是通过特定的编码规则来表示数据的层次关系,从而简化树形结构的构建过程。这种方法可以适应任意复杂的层级数据,并且当树的内容发生...
在PowerBuilder 9 (PB9) 中,DataWindow控件是一个强大的数据展示工具,它可以用于显示和操作数据库中的数据。在本案例中,我们将探讨如何使用DataWindow来实现一个treeview,即树型结构,这对于组织层次化数据非常...
对于层级数据,需要指定父键和子键字段,以便DataWindow能正确地构建树形结构。最后,可以通过调整列宽、设置展开级别等属性来自定义显示效果。 在使用PB9树型DataWindow时,有几个关键点需要注意。一是交互性,...
在软件开发中,树形结构常用于表示层次关系,如文件系统、组织结构或这里提到的菜单系统。下面将详细介绍如何在PowerBuilder中实现这个过程,以及相关的查询、修改和删除操作。 **一、PowerBuilder简介** Power...
在本案例中,我们将探讨如何利用数据窗口生成树形结构,这是一种高效的数据组织和展示方式,特别适用于层次化信息的呈现。 首先,让我们深入理解两种生成树形结构的方法: 1. **数据窗口的列作为Tree的一级**:...
DOM解析器将整个XML文档加载到内存中,形成一个树形结构,使得开发者可以方便地访问任何部分的数据。使用DOM解析XML,你可以通过节点遍历轻松地查找、修改或删除数据。然而,由于DOM需要一次性加载整个文档,对于...
2. **数据绑定**:将文件系统目录结构与TreeCtrl控件绑定,通过遍历文件系统获取目录信息并显示在树形结构中。同时,文件信息需要与ListCtrl控件绑定,实时更新文件列表。 3. **文件操作API调用**:由于Power...
1. **控件介绍**:TreeView控件由节点(TreeNode)组成,每个节点可以有子节点,形成一个树形结构。用户可以通过展开和折叠节点来查看或隐藏子节点。 2. **添加节点**:你可以通过编程方式动态添加或预先定义在设计...
2. 遍历DOM树:解析后的DOM对象形成了一棵树形结构,可以通过`GetFirstChild`、`GetNextSibling`等函数遍历其节点,找出需要的数据。 3. 创建数据窗口对象:根据XML结构,创建对应的数据窗口对象。可以手动设计数据...
2. 事件处理:每个控件都有自己的事件,比如Tree control的NodeClick事件,当用户点击树形结构的某个节点时,程序应响应并更新邮件列表或切换到相应视图。 3. 数据绑定:DataWindow控件需要与数据库进行交互。使用...
“PB解析json,可解析树立菜单”说明PB不仅能够解析基本的JSON对象,还能够处理嵌套结构,例如包含层次关系的数据,这在构建如树形菜单等复杂用户界面时非常有用。“也完美可解析后将结果存到数据源”则强调了PB在...
这可以通过编程的方式完成,例如在Load事件中解析Data Window的结果集,并根据数据生成相应的树形结构。 此外,为了使用户能够交互地操作Tree控件,我们需要处理用户的点击事件,这通常通过Tree控件的Click事件来...
在PB中,数据窗口是一种用于显示和操作数据库数据的组件,而“数据窗口树”则是数据窗口的一种特殊形式,呈现为树形结构,便于用户以层次结构查看和操作数据。 描述中提到,“PB 8 用户对象 按钮 数据窗口 树视图等...
在树形结构中,每个节点都可以有子节点,以此类推,形成一个层级。这使得权限分配可以按照组织架构或者资源的层级进行,例如,父节点的权限会继承给其所有子节点,同时也可以为每个节点单独设定权限。这种结构在大型...
- PB9也支持DOM(Document Object Model)模型,这是一种树形结构,允许程序通过节点操作XML。 3. **读取XML**: - 使用XMLTextReader类:创建XMLTextReader对象,通过Open方法打开XML文件,然后使用Read方法逐个...
3. **控件库**:PB9内建了大量的控件,如按钮、列表框、树形视图等,这些控件可以用来构建面板的功能区域,如邮件列表、约会日历等。 4. **事件驱动编程**:PB9采用事件驱动编程模型,用户操作(如点击按钮)会触发...
DOM解析器将整个XML文件加载到内存中,形成一个可遍历的树形结构;SAX解析器则采用事件驱动的方式,逐行读取XML,更适合处理大文件。 2. **XMLSchema和DTD**:XMLSchema或DTD(Document Type Definition)用于定义...
类XP的“我的电脑”窗口则暗示了应用程序采用了Windows XP时代的文件管理器风格,包括树形目录结构、缩略图视图、文件操作等。开发者可能使用了PB9的窗口和控件来重现这些元素,以便用户能够方便地浏览和管理文件。 ...