OpenWithParm打开窗口导致的PB11.5编译问题解决之道

YFCTA 2012-02-13 12:04:46
问题描述如下
现象: pb11.5将程序打包成一个独立的exe文件,不包含其他pbd文件或者dll文件,编译通过,程序可以执行,但当打开用OpenWithParm方式打开的功能模块时,程序报错“unknown object type: w_xxx”退出,其中w_xxx为程序中的一窗口对象。

尝试解决办法:
尝试一,在应用的open事件中添加 IF 语句,语句中只包含 open(w_xxx);

尝试二,在应用中自定义事件【事件程序执行不会调用】,事件中只包含 open(w_xxx);

尝试一和尝试二在编译时,pb编译预处理结束后,编译终止,pb程序中未提示任何错误信息,在操作系统临时文件夹下,找不到编译log。

尝试三,在应用中新建一窗口对象,在该窗口对象的自定义函数中添加open(w_xxx)——编译通过,但程序任然报错“unknown object type: w_xxx”退出。

请有这方面经验的朋友给予指导,先谢了。
...全文
265 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
YFCTA 2012-02-13
  • 打赏
  • 举报
回复
TO fjfzyufan

谢谢你的回复,数据窗口不存在此问题——数据窗口之前有制作pbr文件。
YFCTA 2012-02-13
  • 打赏
  • 举报
回复
TO sjlion

谢谢你给的思路。

对此问题,已明确问题所在,所以十分希望通过大家努力来真正解决。
YFCTA 2012-02-13
  • 打赏
  • 举报
回复
TO PB8

谢谢你的建议,数据窗口之前有制作pbr文件,所以不存在问题;

“要么把它整个你的主PBL中”——让我想起了早些年的确也曾用过此方法,大喜,将w_xxx移入应用所在pbl,编译,满以为问题可以解决,但程序执行依旧报同意的错。

我把关键代码摘抄出来,示例如下,可能大家好更好理解
window iw_window
OpenWithParm(iw_window,"","w_xxx",w_main) 【说明:w_main 是应用的主窗口】

问题已确诊是因为OpenWithParm方式打开窗口,PB不能找到w_xxx窗口而报错,如果把上述代码换成
Open(w_xxx),则一切正常,但程序功能需要以OpenWithParm方式打开。
fjfzyufan 2012-02-13
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 pb8 的回复:]
在多个pbl的情况下,编译成单个EXE时,如果只是动态引用数据窗口对象,通过指定资源文件就可以了,如果有其它自定义窗口或对象,要么把它整个你的主PBL中,要么只能把它所在的pbl单独编译成pbd,通过AddtoLibraryList加载到应用,再进行引用
[/Quote]

同意。 估计你有许多数据窗口也是没法显示的。
the7thsense 2012-02-13
  • 打赏
  • 举报
回复
mark
sjlion 2012-02-13
  • 打赏
  • 举报
回复
不行的话就别费那劲了,先编译成几个文件,再用VMware ThinApp打包成单个exe,效果一样。
pb8 2012-02-13
  • 打赏
  • 举报
回复
在多个pbl的情况下,编译成单个EXE时,如果只是动态引用数据窗口对象,通过指定资源文件就可以了,如果有其它自定义窗口或对象,要么把它整个你的主PBL中,要么只能把它所在的pbl单独编译成pbd,通过AddtoLibraryList加载到应用,再进行引用
YFCTA 2012-02-13
  • 打赏
  • 举报
回复
补充说明,程序中的OpenWithParm是下面格式用法,

OpenWithParm(windowvar,parameter,windowtype{,parent})

非通常大家给响应窗口传参的用法
OpenWithParm(windowvar,parameter{,parent})

YFCTA 2012-02-13
  • 打赏
  • 举报
回复
TO xuam

谢谢你的回复!w_xxx因为程序功能需要时main型,请问还有其他办法吗
xuam 2012-02-13
  • 打赏
  • 举报
回复
w_xxx 要是response类型.

401

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 非技术版
社区管理员
  • 非技术版社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧