一、实现运行窗口居中
众所周知,PowerBuilder 7.0在以前的版本中提供了图形化的预览工具,可以很方便的在设计阶段实现窗口居中。但是,到了7.0似乎该项工具被取消了,也没有什么属性来设置,至少我没有找到。每当我们需要将窗口居中的时候只有一点一点地调整它的X,Y值,这一点十分让人头痛。出于无奈,只好通过编程实现。我们只在每个需要居中的窗口的Open事件中写上这些代码就会实现窗口的自动居中。
要实现窗口的自动居中,我们可以用函数Move()来实现。但是,由于我们开发出来的应用程序往往会在不同的设置环境中运行,虽然一般情况下是由我们为用户配置好的,但我们总不能保证用户显示器的设置模式不会改变。所幸的是,PB为我们提供了环境对象Environment,该对象其实是一个系统结构,其中保存了PB应用程序的运行平台信息,例如,代码集,CPU类型等。其中当然会有我们需要的屏幕宽和高。为了得到该结构我们可以用函数GetEnvironment()。该函数的作用是得到关于操作系统,处理器和屏幕的系统信息。具体用法如下:
Environment my_system
Integer li_ScreenWidth, li_ScreenHeight
GetEnvironment(my_system)
// 得到屏幕的总宽度和长度
li_ScreenWidth = PixelsToUnits(my_system.ScreenWidth, XPixelsToUnits!)
li_ScreenHeight = PixelsToUnits(my_system.ScreenHeight, XPixelsToUnits!)
// 函数PixelsToUnits()的作用是将屏幕的像数转换成PowerBuilder使用的单位,因为像数通常不用于方形中,具体用法请参见函数手册。
然后就可以用Move()来实现窗口居中。
This.Move((li_ScreenWidth - this.Width)/2, &
(li_ScreenHeight - this.Height)/2 )
二、数据窗口中实现字段的组合
你有没有碰到这样的情况,我们输入了客户的详细地址资料,包括省份,城市,地址,邮编。当我们要给客户们邮寄信函时需要将他们的省份,城市,地址,邮编连成在一起打印出来。然而,这些信息是分开存储的,即存在不同的字段。这时我们就可以利用PowerBuiler提供的在数据窗口添加计算域(Compute Field)来实现字符字段的组合显示。
现在假设客户的省份,城市,地址,邮编分别存放在不同的字段中,它们是Province,City,Address,PC。我们要得到“邮编+省份+城市+地址”的格式,如:“(214001)江苏省无锡市人民路1号。",具体实现如下:
1、在需要显示的位置添加一个计算域(Compute Field)
2、在它的表达式栏中写上“ '(' + PC + ' )' + Province + City + Address ”
3、单击确定完成。
很容易是不是。需要提醒大家的是,计算域只能用来显示,不能对它进行修改,因为它没有TAB属性,不能得到焦点。