PowerBuilder 19 R3中Extend Ancestor Script(EAS)状态异常咨询
PowerBuilder 19 R3继承函数EAS状态异常问题排查与处理
继承层级结构
window ↓ w_base ↓ w_mywin1 - 包含 -> wf_func() ↓ w_mywin2 - 继承 -> wf_func()
关键概念说明
wf_func():窗口对象级自定义函数w_base:所有派生窗口的基础窗口对象- EAS:全称Extend Ancestor Script,即扩展祖先脚本,控制是否自动执行祖先对象的同名脚本
问题现象
- 编辑继承窗口
w_mywin2的wf_func()时,初始EAS处于启用并勾选状态,但运行测试时祖先脚本完全未执行;返回函数编辑界面后,发现EAS已被自动取消勾选且处于禁用状态。 - 此前曾禁用窗口内某
CommandButton的EAS,之后重新启用该按钮的EAS时,wf_func()的EAS又自动恢复为启用状态,状态表现存在明显不一致。 - 目前已通过在
wf_func()中手动调用super::wf_func()解决了该函数的祖先脚本执行问题,但窗口仍存在其他继承相关的异常表现。
排查方向与处理建议
- 操作误触排查:检查是否在编辑函数时误触发了EAS状态的切换快捷键(PowerBuilder部分版本支持快捷键快速切换EAS状态),或者在编辑过程中不小心点击了状态控件导致状态变更。
- 版本BUG与缓存清理:PowerBuilder 19 R3存在部分继承相关的已知BUG,尤其是跨对象的EAS状态联动场景,可尝试以下操作:
- 清理工作区的临时文件:删除
.pbt、.pbw的备份文件,以及项目目录下Cache文件夹内的所有缓存内容,重新打开项目 - 导出窗口对象为SRD格式文件,删除原对象后重新导入SRD文件,再检查EAS状态是否稳定
- 安装PowerBuilder 19 R3的最新官方补丁包,后续补丁修复过不少继承脚本的异常问题
- 清理工作区的临时文件:删除
- 对象定义冲突检查:若窗口内存在多个继承对象,可能出现属性联动的隐性冲突,可单独导出
w_base和w_mywin2的对象定义,逐行检查EAS配置的相关节点是否存在异常。
内容的提问来源于stack exchange,提问作者José
相关产品推荐
相关产品推荐

