PB powerbuiler通过 edit source 方式直接修改数据库窗口风格

本文介绍了PowerBuilder中数据库窗口(DW)的设计方法,并提供了一种实用的技巧,即通过编辑源码的方式实现DW风格的切换,适用于从grid风格转换为tabular风格等场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

powerbuiler 的数据库窗口设计,DW风格只能在新增的时候进行选择,无法在设计过程中进行切换。比如一个grid风格的DW,各元素已经调整完成,只是想切换到tabular风格,那么正常情况只能重新创建一个DW。


通过"edit source"方式编辑源码是可以直接切换DW风格

1、右键DW对象,打开“edit source”设计窗口

2、找到processing属性,设置为0和1可以切换DW风格

数据窗口源码介绍 (举例见d_dbit_example.srd,测试数据库PB自带的EAS Demo DB V120) 1.第一行:release 12; 数据窗口所属PB的版本号,如果想把高版本的datawindow导入低版本的PB中要修改此数字; 2.datawindow()行 通常用修改processing属性,可以把你的数据窗口由grid变成freeform或其它类型 例:freeform:0 grid:1 3.header()行 可以整行复制粘贴,并命名为header[1],header[2],这样可以让数据窗口有多个header 4.table()行 这里全是定义的数据属性,是setitem,update,object.data等方法访问的根源 如果存在table()里的column,数据窗口里可以不存在任何对象,仍然可以访问数据窗口的数据 如果想创建一个空的数据窗口,可以只定义: release 12; table() 5.table(column行) 是第几个column,它的ID就是多少,其中也定义了是否可以update时和更新到数据表的字段名 6.table(retrieve行) 检索数据时使用的SQL语句,可以通过setsqlselect或modify("table.sqlselect")方法去动态修改 修改后要重新定义数据窗口的更新属性 7.column()行 id即是对应table(column行)里的行次,名称(name)可以随便命名,也可以没有,则默认为table(column行)里的name 8.compute()行 计算列,可以通过表达式计算显示特定值(具体函数可以见共享里的画笔函数). 9.text()行 有时可以代替计算列; 通过定义text的表达式,可以实现一列中显示两个字段值,注意结果必须要转换成string类型(而column和compute则不行); 10.htmltable()行 按照格式导出(saveas)html文件,为了保证格式的完整,数据窗口的单位最好设置成pixels GenerateCSS='1' //保持格式及颜色 Border='0' //不要table边框 CellSpacing='0' //单元格无间距(此项在界面上经常设置不上) 注: (1)Grid生成<Table>标签,Freeform生成<DIV> + <SPAN>标签; (2)生成htmltable时,不知为何会在CSS中的开始自动加一个分号";",导致excel等浏览器打开不能正常显示格式; (3)band为foreground或background的对象导不出来,可以动态修改后再导出. 11.export.xml()行 定义导出xml文件的格式,并为模板保存名称 使用时一定要设置usetemplate值 12.import.xml()行 定义导入xml文件的格式,并为模板保存名称 使用时一定要设置usetemplate值 13.表达式介绍 略 14.其它也略
<think>好的,我现在要回答用户关于PowerBuilder 9.0中的Structure的问题。首先,我需要确认自己对PowerBuilder的了解,特别是Structure的概念。虽然我之前接触过PowerBuilder,但可能有些细节需要回忆或查阅资料。 用户的问题是要介绍PowerBuilder 9.0中的PB Object里的Structure。首先,我应该明确Structure在PB中的定义和作用。记得在PowerBuilder中,Structure类似于其他编程语言中的结构体,用于将多个相关的变量组合在一起。但需要具体说明它在PB中的具体应用场景和如何创建、使用。 接下来,我需要考虑Structure的两种类型:全局结构和对象级结构。全局结构可以在整个应用中使用,而对象级结构则属于特定的对象,比如窗口或菜单。这部分需要解释清楚两者的区别和使用场景。 然后,应该描述如何在PowerBuilder 9.0中创建Structure。可能涉及到IDE的操作步骤,比如通过菜单添加,选择结构类型,定义成员变量等。需要确保步骤准确,可能需要回忆PowerBuilder的界面布局,比如工具栏和系统树的位置。 还要提到使用Structure的好处,比如代码组织和数据传递的便利性。可以举例说明在函数参数或数据窗口中使用结构的情况,这样用户能更好地理解其实际应用。 另外,用户可能想知道Structure和其他数据类型的区别,比如和类或用户对象的对比。需要指出Structure主要用于轻量级的数据聚合,而不包含方法,这有助于用户选择合适的数据结构。 最后,要确保回答清晰,分点说明,避免技术术语过于复杂,同时覆盖用户可能关心的方面,比如如何访问结构成员,是否支持嵌套等。可能需要检查是否有遗漏的关键点,比如结构在数据窗口中的使用,或者与PFC的集成情况,不过根据常见功能,可能不需要深入这些细节。 现在,总结一下需要涵盖的内容点: 1. Structure的定义和作用 2. 全局结构与对象级结构的区别 3. 创建步骤 4. 使用场景和优势 5. 成员访问方式 6. 与其他数据结构的对比 需要确保语言简洁,用中文口语化表达,避免长句,分段落或分项说明。同时,检查是否有错误,比如结构是否支持方法(应该不支持),或者是否支持嵌套结构(可能支持,但需确认)。 可能还需要考虑用户的使用场景,比如他们可能是在维护旧项目,因此需要明确Structure在PB 9.0中的特性和限制,是否与其他版本有差异。不过用户明确问的是9.0版本,可能不需要比较版本差异,除非有特别需要注意的地方。 现在将这些点组织成一个连贯的回答,确保结构清晰,信息准确。在</think>PowerBuilder 9.0中,**Structure(结构)** 是一种用于组合多个相关变量的数据类型,类似于其他编程语言中的“结构体”。它主要用于将逻辑上相关联的数据封装成一个整体,简化数据管理和传递。以下是详细介绍: --- ### **1. Structure的作用** - **数据聚合**:将多个变量(如整数、字符串、对象等)打包成一个自定义类型。 - **简化参数传递**:在函数或事件中,可通过传递单个结构参数替代多个独立参数。 - **代码可维护性**:提高代码可读性,尤其在处理复杂数据时更清晰。 --- ### **2. 两种类型** - **全局结构(Global Structure)** 可在整个应用程序中访问,通过菜单 **File → New → PB Object → Structure** 创建。 - **对象级结构(Object-Level Structure)** 隶属于特定对象(如窗口、菜单),仅在所属对象及关联代码中可用。创建方式:在对象画板中右键选择 **Insert → Structure**。 --- ### **3. 创建步骤(以全局结构为例)** 1. 打开PowerBuilder 9.0,进入目标应用(Application)。 2. 点击菜单 **File → New**,在 **PB Object** 标签页选择 **Structure**。 3. 在结构定义界面,添加成员变量(如 `id: Integer`, `name: String`)。 4. 保存并命名结构(如 `str_employee`)。 --- ### **4. 使用场景示例** - **函数参数传递** 将结构作为参数传入函数,避免冗长的参数列表: ```powerbuilder // 定义函数 Function void DisplayEmployee(str_employee emp); MessageBox("员工信息", "ID: " + emp.id + ", 姓名: " + emp.name) End Function // 调用 str_employee l_emp l_emp.id = 1001 l_emp.name = "张三" DisplayEmployee(l_emp) ``` - **数据窗口交互** 与数据窗口控件结合,方便读取或设置多列数据。 --- ### **5. 访问结构成员** 通过点符号 `.` 访问成员: ```powerbuilder str_employee l_emp l_emp.id = 1001 // 直接赋值 ``` --- ### **6. 优势与局限** - **优点**: - 轻量级,适合简单数据聚合。 - 无需像类(Class)那样实例化对象,使用更直接。 - **局限**: - 不支持方法(仅包含数据,无函数)。 - 复杂逻辑建议使用用户对象(User Object)。 --- ### **总结** 在PowerBuilder 9.0中,Structure是管理关联数据的实用工具,尤其适用于参数传递和数据封装。合理使用能提升代码整洁性和维护效率。如果是复杂业务逻辑,可结合自定义类(如NVO)进一步扩展功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值