在PowerBuilder中更改窗口继承
PowerBuilder采用真正的面向对象技术,而“继承”是面向对象的一大特征,充分利用这一技术,可以在很大程度上减少我们编程的工作量,加速开发进程。
窗口的继承在PowerBuilder中最为常见,在开发过程中,我们经常会遇到更改窗口继承的情况。此时,新建并继承一个新窗口,重做一遍是常见的办法,但某些时候我们可用Export和Import方便地实现窗口继承的更改。现以更改窗口w_mmaintain_yw_input的继承窗口(父窗口)为例进行说明。
#1 一、使用Export
在Library Painter 中选中窗口w_mmaintain_yw_input
然后在主菜单中选择 Entry →再选Export ,PB将此窗口导入一文件w_mmaintain_yw_input.srw中,我们对此文件进行编缉,可看到PB将此窗口中所有对象的定义以及我们编写的所有脚本全部导入此文件。
其中此窗口的定义描述有如下语句:
global type w_mmaintain_yw_input from w_mmaintain_enter_template
表明窗口w_mmaintain_yw_input 是从窗口w_mmaintain_enter_template继承而来的。
若描述如下:
global type w_mmaintain_yw_input from Window
表明窗口w_mmaintain_yw_input没有使用继承,而是直接新建的。
如果我们要将窗口w_mmaintain_yw_input 的继承窗口(父窗口)更改为w_mmaintain_input_template,则我们可将上述语句改为:
global type w_mmaintain_yw_input from w_mmaintain_input_template
并搜索w_mmaintain_enter_template,将其全部更改为w_mmaintain_input_template
编缉完成后存盘。
#1 二、使用Import
在主菜单中选择 Entry →再选Import,选择我们刚才所编缉的文件w_mmaintain_yw_input.srw导入,即完成窗口w_mmaintain_yw_input继承的修改。
在用上述方法更改窗口继承时要注意:
1.更改前应做好备份。
2.如果改继承前父窗口与改继承后父窗口内控件有区别,如上例,有一个Command Button“保存”在窗口w_mmaintain_en_ter_template中名字为cb_update,而在窗口w_mmaintain_input_template中名字为cb_save,则我们需要搜索文件w_mmaintain_yw_input.srw,将其中所有cb_update 改为cb_save,否则导入操作将出错而不能完成。
3.如果更改继承前父窗口与更改继承后父窗口内控件的区别过大,也可用上述方法完成,但比较繁琐,建议仍用最直接的方法——重建。