导言:
数据窗口是powerbuilder中一个最重要的控件,且是powerbuilder独有的一个控件,他存在于用户与数据库之间,能够方便的帮助用户进行sql语句对数据库进行操作,使开发人员能够节约大量时间与精力,然而相对数据窗口的强大,powerbuilder软件本身就显得略有不足,相对其他开发软件而言会有更多的bug。下面就数据窗口的创建与标准布局做一些讲解。
1.新建数据窗口时常见的处理流程
a)新建数据窗口
1)选择表和要编辑、要显示的字段。
2)设置检索参数
3)设置where条件
b)显示处理(不分先后)
1)去掉无需编辑、无需显示的,但要存储、处理数据的字段
2)调整Header、Detail区域字体大小
3)设置显示格式format掩码
1.直接掩码写死
2.根据条件设置掩码
c)输入控制
1)设置字段是否可以编辑
1.去掉无需编辑、需要显示的字段的焦点
2.根据条件设置字段是否可以编辑
2)设置字段的编辑风格
1.edit标签页下
a)edit
b)editmask
c)radiobuttons
d)checkbox
e)dropdowndw
f)dropdownlistbox
3)设置字段掩码(如果无显示掩码,则以编辑掩码显示)
1.数值(“0.00”、“###0.00”)
2.日期(“yyyy-mm-dd”、“yyyy-mm-dd hh:mm:ss”)
d)设置数据窗口的更新属性
一、创建powerbuilder数据窗口时的注意事项
1.简化数据窗口输出列
在powerbuilder中,数据传输的流量问题是值得注意的一个问题,每一个数据从数据库到数据窗口都是需要流量作为代价的。因此,在创建数据库的时候,能够尽可能的少引入列是一个应当遵守的原则。理论上,能够不读取的字段就不要将其加入数据窗口中,以减少网络传输。
2.列visible属性设为false后改回自动移动到最后的处理方法。
在数据窗口的使用中,时常会对列项目的visible属性做修改,如sno.visible = false 之后又做了sno.visible=true 的操作的情况下,该列会移至属性行最后,如何解决该问题。
解决方法:
1.在该列改回true的时候将其原先在其后的列逐一设为sno.visible = false ,然后将包括原先修改列在内的所有列逐一做sno.visible = true的修改,使其能够达到将原先修改的列放回原来的位置。
2.或有另一种方法,在使visible属性变为false的时候将其x坐标记下,记录于一个实例变量中,在使用时将其根据该x坐标插入,其后的列也将顺着这个顺序向后推。
3.在使用powerbuilder的时候注意及时保存
由于powerbuilder软件有几个版本不稳定(例如8.X和10等),因此,在做一系列操作后,尽可能的做保存,以免PB程序崩溃。
4.排版时使用的字体格式
排版:
1.字体:宋体
2.字号:9号
3.数字型靠右(金额掩码一般为’0.00’),文字型靠左,长度相同可以考虑居中
(另附:小技巧一则,选中第一列然后点击ctrl+方向键,可以选中同行的列,进行top,left,right等操作.)
5.设置焦点
1.如果数据列的内容需要在运行时编辑,可以按需要将焦点值进行设置.
例如:
将焦点值设置如下,在运行时按tab键会按照从小到大的顺序移动光标.
2.如果数据列不需要做修改,可以将其焦点设置为0,则该数据项不能被选中,同样无法被修改。可点击按钮使。
3.使用protect属性对数据窗口控制
使用焦点功能固然可以控制数据项可否被修改,但过于死板。
当我们需要在某些条件先可以编辑该项,而有些情况下又不可以编辑的时候,我们就可以使用protect属性,在其表达式编辑中输入自己需要达到的功能。
(在datawindow中点击表格要修改的数据项,在数据窗口属性general标签页下找protect属性)
例如:当组号大于0时可以编辑,可以单击
可以这样写语句:if (zh>0,0,1)
1对数据窗口中显示的控制
字段以文本框样式显示,且没有焦点的时候。默认情况下,单击数据窗口该字段的时候会出现黑色背景(破坏美观)。在数据窗口设计器中,选择数据窗口中,选择general标签页,去掉mouse selection选择。
二、基于数据窗口显示/编辑的控制
2.对数据窗口中编辑的控制
2.1 在format中使用format控制数据窗口项编辑输入格式
数据项的列在输入数据时经常会出现数字位数列参差不齐,我们可以通过修改format参数,把个位十位等的对齐在一列上。用于显示。同理日期格式也是一样。
“#”表示可以省略
“0”如果该位置为空,则用0来显示
2.2 在Edit属性中style type控制数据窗口项编辑输入时允许字符
上面所介绍的通过修改format属性的例子,它所改变的是显示的效果。我们可以将该列改为掩码类型,用于编辑数据时。
“#”表示该位置没有数字的情况下,可以不填充
“0”表示用0来占位
三、数据窗口创建中重要属性介绍
1.关于Edit选项卡里style type属性DropDownDW 类型的解析
由于数据库中记录的数据众多,若所有记录都使用全称记录则容易导致数据库数据量变大,因此有了通过映射的方法使数据库存储量变小同时使使用者又能够详细的看到数据内容。实现方法如下:
1.选择一个数据列,
2.选择edit 中的style type 属性 选择为DropDownDW
3.然后在display column 中关联要在下拉菜单中显示的列项
4.在data column中关联在数据库中实际存储的内容。
2.数据窗口中分割条对各行高的控制
在创建数据窗口对象的时,通常要调整布局,经常要拖动分割条,但是拖动的动作非常大,无法做到精细。我们单击分割条,通过修改General选项里的height属性值来改变位置,然后右击分隔条来固定修改号的位置。
3.对line控件做控制调整
1.手工拖拉
2.自动调整。例如画竖线时方法如下:
将x值设为相同,不改动y1时,将y2的值设为rowheight()
4.date window中timer interval属性起到的作用
起到触发时间间隔的作用。可以在该属性中表达多少时间触发一次刷新事件。
5.更改背景
在background中设置其背景的参数,也可以在他的背景属性中添加表达式,使不同的情况下有不同的效果。
例如:在表达式中输入 if (bggk=’1’,rgb(255,0,0),rgb(0,0,0))表示如果该患者病情严重,则使之背景颜色变为红色,引起患者注意,体现了软件人性化设计的一面。(如果要做其他属性的修改,选中项的方式也可以借鉴。)
6.滚动条注意事项
Edit选项卡
Checkbox:
Editmask
Dropdownlistbox
dropdowndatawindow
数据列设置为dropdownlistbox和dropdowndatawindow时,要把vertical scroll bar 属性 选择true,然后给其设置默认值。
a)Checkbox:
选择Checkbox之后,要规定它的返回值,例如:1为选中,0为不选,并设置默认值为1.
b)Editmask:
数据项的列在输入数据时经常会出现数字列参差不齐,Editmask可以将该列改为掩码类型,用于编辑数据时。
另外format参数也可以改变数字不对齐的状况,但主要用于数据显示。
7.autosize height的详细说明
该属性的作用是为了可以提供控件自适应文档高度,而提供自动扩充行高。
在数据窗口的标签属性中和数据窗口具体的选中项属性中分别都存在有autosize height属性,可对其行高是否可自适应做控制。(选中该列,选position,在下面找)
而可选择项目过多的情况下,则可以通过再创建一个窗口,在窗口中设置数据窗口,并提供首字母查询功能模块,以方便用户使用。
8.empty string is null
由于在某些数据库(例如oracle)中empty和null是不同的,因此在一些情况下,字符为null存储时会发生错误(between retrieve and update),因此为了避免类似错误,可以将该属性设为true.
(选中该列,选Edit,在下面找)
四、打印数据窗口报表时的各个属性解析
1.关于打印数据窗口报表时边距的属性
Left margin:打印时左边距
Top margin 打印时顶部边距
(方法一:在Datawindow属性中选择print Specifications,再进行设置
方法二:在file中选中printer setup,再选中setup,再选中metrics,再进行设置)
a)改任务名:
调整号Left margin和 Top margin 边距。
2. 汇总区(Summary)和脚注区(footer)内容
脚注区(footer):一般情况下,页码的位置设计,可将其放置于footer区中,在这种情况下,无论报表的显示页面是否占全了整个页面,其页码的显示都会置于页面的最下方。
汇总区(Summary):而制表人,制表日期等属性则习惯上放置于summary区,方便阅读。
3.document name控制打印机队列中,改任务名