本文介绍的方法和技巧都是笔者在实践中的一点积累在此拿出来与大家一起分享希望在阅读本文后会对您有所帮助或启发文中如有任何不足之处还望同行们给予指教在此我先道声谢
一实现运行窗口居中
众所周知PowerBuilder 在以前的版本中提供了图形化的预览工具可以很方便的在设计阶段实现窗口居中但是到了似乎该项工具被取消了也没有什么属性来设置至少我没有找到每当我们需要将窗口居中的时候只有一点一点地调整它的XY值这一点十分让人头痛出于无奈只好通过编程实现我们只在每个需要居中的窗口的Open事件中写上这些代码就会实现窗口的自动居中
要实现窗口的自动居中我们可以用函数Move()来实现但是由于我们开发出来的应用程序往往会在不同的设置环境中运行虽然一般情况下是由我们为用户配置好的但我们总不能保证用户显示器的设置模式不会改变所幸的是PB为我们提供了环境对象Environment该对象其实是一个系统结构其中保存了PB应用程序的运行平台信息例如代码集CPU类型等其中当然会有我们需要的屏幕宽和高为了得到该结构我们可以用函数GetEnvironment()该函数的作用是得到关于操作系统处理器和屏幕的系统信息具体用法如下
Environment my_system
Integer li_ScreenWidth li_ScreenHeight
GetEnvironment(my_system)// 得到屏幕的总宽度和长度
li_ScreenWidth = PixelsToUnits(my_systemScreenWidth XPixelsToUnits!)
li_ScreenHeight = PixelsToUnits(my_systemScreenHeight XPixelsToUnits!)
// 函数PixelsToUnits()的作用是将屏幕的像数转换成PowerBuilder使用的单位因为像数通常不用于方形中具体用法请参见函数手册
然后就可以用Move()来实现窗口居中
ThisMove((li_ScreenWidth thisWidth)/ &
(li_ScreenHeight thisHeight)/ )
二数据窗口中实现字段的组合
你有没有碰到这样的情况我们输入了客户的详细地址资料包括省份城市地址邮编当我们要给客户们邮寄信函时需要将他们的省份城市地址邮编连成在一起打印出来然而这些信息是分开存储的即存在不同的字段这时我们就可以利用PowerBuiler提供的在数据窗口添加计算域(Compute Field)来实现字符字段的组合显示
现在假设客户的省份城市地址邮编分别存放在不同的字段中它们是ProvinceCityAddressPC我们要得到邮编+省份+城市+地址的格式如()江苏省无锡市人民路号具体实现如下
在需要显示的位置添加一个计算域(Compute Field)
在它的表达式栏中写上 ( + PC + ) + Province + City + Address
单击确定完成
很容易是不是需要提醒大家的是计算域只能用来显示不能对它进行修改因为它没有TAB属性不能得到焦点
三数据窗口中的条码显示
在数据窗口中显示条码是不是很神秘?这对于没有接触过条码的人来说也许是这样其实它简单的不能再简单了别忘了我们在写文稿时是如何使文稿看上去更有艺术化没错我们会给它用上各种字体问题不就解决了吗?条码也是种字体只不过我们看不懂罢了我们只要将需要用条码显示的字段的字体换上相应的条码字体就行了比如常用的 of 条码字库等这些字体大多数是免费的可以到网上去下载然后安装就行了
四数据窗口的自动刷新技术
在我们编写诸如像库存销售等应用系统时总希望程序能动态的自动刷新库存量或销售量比如说每隔秒刷新一次要实现这样的功能只要我们利用数据窗口的时间间隔属性(Timer Interval)当该值为时数据窗口不进行刷新如果要使数据窗口以每一秒钟的频率刷新的话只要将该值设为即毫秒
我们还可以为应用程序添加闪烁报警的功能就拿库存量来说吧最常用的是当某货物的库存量达到一个最低库存量时程序应能自动判别并用警告色显示通常是红色此时我们只要在运用了上述的方法后再在需要闪烁的字段上比如库存量在它的颜色属性中写上相应的语句下面这段代码实现当某一物品的库存量小于的时候程序以红色闪烁显示警告
if ( Store_Num < &
if mod( Second(Now()) ) <> & // 每秒一次偶数显示红色奇数显示白色即底色
RGB( ) RGB( ) )