循序渐进学习Power Builder 6.0(10-3)

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2009-03-16 22:59:02

10.3 修改后代对象

继承祖先窗口并不是我们的目的。使用继承特性的目的是将多个类似对象的一些共同的特性定义在祖先对象当中,然后通过继承这个祖先对象使后代对象获得这些共同的特性,完成继承工作之后,还有一个重要的工作就是通过修改这些后代对象使它们获得自己独特的功能,从而完成这些后代对象本身的任务。

下面我们就通过一个例子来说明如何实现这种修改。首先打开一个后代窗口。现在这个窗口和祖先窗口是完全相同的。如图10-6。

循序渐进学习Power Builder 6.0(10-3)(图一)

图10-6

祖先窗口的功能是显示数据库当中所有的体育明星的资料,我们希望修改后代窗口,使之只显示足球明星的资料。

选择静态文本对象,在它上面单击鼠标右键,弹出菜单,选择PROPERTIES 命令,把TEXT一栏中的内容修改为“足球明星”。删去我们不想要的按钮。如图10-7。

循序渐进学习Power Builder 6.0(10-3)(图二)

图10-7

如果您想把已经修改的属性重设为祖先窗口中的内容,只要选择EDIT 菜单当中的RESET PROPERTIES重置属性命令就可以了。在数据窗口对象的下面我们就修改数据窗口的脚本,使之具有新的功能。

在数据窗口上面单击鼠标的右键,弹出菜单,选择SCRIPT命令,打开编写脚本工作区,我们看到,这时工作区的内容是空的。如图10-8。

循序渐进学习Power Builder 6.0(10-3)(图三)

图10-8

单击SELECT EVENT 事件选择列表框,选择需要编写脚本的事件。您可以看到所有事件的列表,左边有一个小图标的事件是祖先对象当中已经存在脚本的。如图10-9。

循序渐进学习Power Builder 6.0(10-3)(图四)

图10-9

选择CLICKED 单击事件。

这时,工作区当中仍然是空的,如果您想显示祖先的脚本,可以选择DESIGN 菜单中的DISPLAY ANCESTOR SCRIPT 显示祖先脚本命令,这样做可以弹出一个对话框,里面显示了祖先的脚本,获得一些提示。如图10-10。

循序渐进学习Power Builder 6.0(10-3)(图五)

图10-10

关闭这个对话框。处理后代脚本和祖先脚本的关系有两种方法,一种是重载祖先的脚本,就是说重新编写一段脚本,使之取代祖先中相应的脚本。比方说,我们在这里输入一段脚本:

STRING SYNTAX,SQLSTR,ERRMSG

SQLSTR = "SELECT SOCCER.NAME,SOCCER.AGE,SOCCER.CLUB,SOCCER.NATION"&

+" FROM SOCCER"

CONNECT USING SQLCA;

SYNTAX = SQLCA.SYNTAXFROMSQL(SQLSTR,"STYLE(TYPE=GRID)", ERRMSG)

dw_1.CREATE(SYNTAX, ERRMSG)

dw_1.Modify("name.Width=390")

dw_1.Modify("age.Width=140")

dw_1.Modify("club.Width=400")

dw_1.Modify("nation.Width=260")

dw_1.SetTransObject(SQLCA)

dw_1.RETRIEVE()

然后在DESIGN窗口当中选择 OVERRIDE ANCESTOR SCRIPT 重载祖先脚本命令,就可以了。

另外一种是扩展祖先的脚本,意思是在祖先脚本基础之上增加一段脚本,这样在程序运行的时候,就首先调用祖先的脚本,然后再执行我们所增加的脚本。如果您希望使用这种方式,就需要在写好脚本之后,选择DESIGN 菜单当中的 EXTEND ANCESTOR SCRIPT 扩展祖先脚本命令。

在POWER BUILDER 当中,继承的层次可以有多层,就是说一个后代对象可以有父亲、爷爷或者更高层次的祖先。在为后代对象编写脚本的时候,我们可以调用任何祖先对象当中已经写好的脚本。比方说调用为父对象当中的CLICKED单击事件编写的脚本,可以输入下面这样的代码。

CALL SUPER::Clicked

注意,这时一定要注明SUPER字样。而调用更高层次祖先的的脚本的时候就必须标出祖先对象的名字,像这样:

W_ANCESTOR::Clicked

我们还可以在后代对象当中调用为祖先对象包括的某个控件或者对象的事件脚本,比方说,这段脚本的意思的就是调用这个祖先对象的一个函数:

W_ANCESTOR::Fuction

了解这些内容,您就基本掌握的POWER BUILDER 的继承特性了。


Tags:

作者:佚名
分享到: 微信 更多