⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 delete-inherit-in-pb.txt

📁 运用“继承”
💻 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 + -