PowerBuilder实用技巧八则(一)

发表于:2008-04-23来源:作者:点击数: 标签:PowerBuilder技巧
本文介绍的方法和技巧都是笔者在实践中的一点积累,在此拿出来与大家一起分享。希望在阅读本文后会对您有所帮助或启发。文中如有任何不足之处还望同行们给予指教。在此,我先道声谢。 一、实现运行窗口居中 众所周知,PowerBuilder 7.0在以前的版本中提供了
 本文介绍的方法和技巧都是笔者在实践中的一点积累,在此拿出来与大家一起分享。希望在阅读本文后会对您有所帮助或启发。文中如有任何不足之处还望同行们给予指教。在此,我先道声谢。

  一、实现运行窗口居中

  众所周知,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属性,不能得到焦点。

  三、数据窗口中的条码显示

  在数据窗口中显示条码是不是很神秘?这对于没有接触过条码的人来说也许是这样。其实,它简单的不能再简单了。别忘了我们在写文稿时是如何使文稿看上去更有艺术化。没错我们会给它用上各种字体。问题不就解决了吗?条码也是种字体,只不过我们看不懂罢了。我们只要将需要用条码显示的字段的字体换上相应的条码字体就行了,比如,常用的3 of 9条码字库等。这些字体大多数是免费的,可以到网上去下载,然后安装就行了。

  四、数据窗口的自动刷新技术

  在我们编写诸如像库存,销售等应用系统时,总希望程序能动态的自动刷新库存量或销售量,比如说每隔1秒刷新一次。要实现这样的功能只要我们利用数据窗口的时间间隔属性(Timer Interval),当该值为0时数据窗口不进行刷新,如果要使数据窗口以每一秒钟的频率刷新的话,只要将该值设为1000,即1000毫秒。

  我们还可以为应用程序添加闪烁报警的功能。就拿库存量来说吧,最常用的是当某货物的库存量达到一个最低库存量时程序应能自动判别,并用警告色显示,通常是红色。此时,我们只要在运用了上述的方法后再在需要闪烁的字段上,比如,库存量,在它的颜色属性中写上相应的语句。下面这段代码实现“当某一物品的库存量小于20的时候,程序以红色闪烁显示警告”

  if ( Store_Num < 20, &
  if mod( Second(Now()), 2) <> 0, & // 每秒一次,偶数显示红色,奇数显示白色,即底色
  RGB(255, 255, 255), RGB(255, 0, 0) )

原文转自:http://www.ltesting.net