📄 delete-inherit-in-pb.txt
字号:
PowerBuilder去掉窗口继承详解
作者:泥草鞋 Email: nocry115@netease.com
作为面向对象的可视化编程平台,“继承”也成为PowerBuilder的一大技术特色。我们的很多大型、中型的应用系统,通过运用“继承”,可以大量减少工作量,从而加速开发进程。
然而,由于种种原因,我们有时会碰到要更改继承、或者去掉继承的情况。这时,我们可以用Export、Import手段解决该问题;更改继承要简单一些,已经有人谈到过,去掉继承则复杂得多。这里,我以w_b继承w_a为例讨论一下:
一、使用Export
在Library Painter中选中窗口w_b,然后在主菜单中选择Entry →再选Export,将此窗口导入文件w_b.srw中,我们对此文件进行编缉Edit,可看到脚本描述如下:
//第一部分
$PBExportHeader$w_b.srw
forward global type w_b from w_a
end type
(控件声明……)
end forward
//第一部分结束
//第二部分
global type w_b from w_a
(控件实例声明……)
end type
global w_b w_b
//第二部分结束
//第三部分
on w_b.create
(创建w_b控件……)
call super::create
(创建w_b控件……)
end on
//第三部分结束
//第四部分
on w_b.destroy
call super::destroy
(释放w_b控件……)
end on
//第四部分结束
//第五部分
//以下为声明w_a的控件
type ... from w_a`... within w_b
...
end type
...
type ... from w_a`... within w_b
...
end type
//声明w_a的控件结束
//第五部分结束
//第六部分
//以下为声明w_b的控件
type 控件 from 标准控件 within w_b
(各项参数)
end type
...
//声明w_b的控件结束
//第六部分结束
//以上为w_b.srw的内容//
我们应作如下修改:
第一部分:
将w_a改为window
第二部分:
将w_a改为window
即global type w_a from Window,并从下一行起插入:
int X=823 //坐标
int Y=360 //坐标
int Width=2016//宽度
int Height=1208//高度
boolean TitleBar=true//是否带标题栏
string Title="去掉继承"//窗口标题
long BackColor=67108864//背景色
boolean ControlMenu=true//是否带控制菜单
boolean MinBox=true//是否带最小化按钮
boolean MaxBox=true//是否带最大化按钮
boolean Resizable=true//大小可否变化
//以上为window类w_b的属性声明
//接着的控件声明不用修改
第三部分:
去掉call super::create
第四部分:
去掉call super::destroy
第五部分:
全部去掉。
第六部分:
不用修改。
二、使用Import
在主菜单中选择Entry →再选Import,选择我们刚才Edit的文件w_b.srw导入,即完成窗口w_b继承的去除。这时再打开w_b将不会有继承的痕迹。
三、建议
1、编辑前应备份w_b。
2、导入成功后,将w_b保存一次;因为第三部分代码不是最优化的,PowerBuiler会自动优化。
3、如果w_b较多继承到w_a的Script,不妨将w_a另存为w_b,再去掉多余的代码
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -