• 全部
  • API 调用
  • 基础类
  • 控件与界面
  • 数据库相关
  • DataWindow
  • 项目管理
  • Web 应用
  • 脚本语言

请问一下,用opensheet带参数打开的窗口,如何引用?

dong_rayne 2011-04-06 10:35:22
window lw_win
String ls_winstr = 'w_user'
OpenSheet(lw_win, ls_winstr, w_main, 0, Original!)

用这种方法打开后,在一个弹出的response窗口中 引用 w_user.wf_change() 函数,提示错误:
null object reference at line 22 in ......
似乎就是不能识别w_user

但是如果用
OpenSheet(w_user, w_main, 0, Original!)
这种方式打开的,是没有问题的。

我现在由于需要,只能用前一种方法打开,该怎么解决这个问题呢?
...全文
64 点赞 收藏 4
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
gui41021 2011-04-06
这种打开方式w_user并没有被实例化,Isvalid(w_user)返回是FALSE的,所以调用它的函数会报错
,如果打开方式不想改,可以按照下面的方法做。
 
liubocy

(天道酬勤)

回复于:2009-07-30 12:02:52

估计你的w_1是用Open ( windowvar, windowtype {, parent } )来打开的,如果是这样,可以:
//全局声明
windwo gw_to_open

//w_1新建个事件ue_retrieve
dw_1.retreive()

//打开w_1
string ls_win

ls_win = 'w_1'
open(gw_to_open, ls_win)


//W_2.cb_1调用w_1的dw_1
if isvalid(gw_to_open) then gw_to_open.dynamic event ue_retieve()



或者可以这样考虑
在点击W_1.cb_1
打开w_2的时候传参数过去
在w_1.cb_1的clicked事件写:
datawindow ldw
ldw = w_1.dw_1
openwithparm(w_2,ldw )

在w_2定义一实例变量datawindow idw
在w_2的open事件写:
idw = message.powerobjectparm
然后就可以在w_2的cb_1的clicked事件写:
idw.retrieve()

回复
yyoinge 2011-04-06
建立一个全局函数f_get_mdi_win,如下:
//====================================================================
// 函数: f_get_mdi_win()
//--------------------------------------------------------------------
// 描述: 根据classname获取mdi子窗口
//--------------------------------------------------------------------
// 参数:
// value string as_winname
//--------------------------------------------------------------------
// 返回: window
//--------------------------------------------------------------------
// 作者: 日期: 2011.04.06
//====================================================================
window wsheet
boolean bvalid
as_winname = lower(as_winname)
wsheet = w_main.getfirstsheet()

if isvalid(wsheet) then
if lower(wsheet.classname()) = as_winname then return wsheet
do
wsheet = w_main.getnextsheet(wsheet)
bvalid = isvalid (wsheet)
if bvalid then
if lower(wsheet.classname()) = as_winname then return wsheet
end if
loop while bvalid
end if
return wsheet



在需要引用的地方,这么写:
window lw
lw = f_get_mdi_win("w_user")
if isvalid(lw) then lw.DYNAMIC wf_change()
回复
dong_rayne 2011-04-06
没有写错啊,支持这种方式打开,而且打开是成功的
回复
tony2009 2011-04-06

OpenSheet(lw_win, ls_winstr, w_main, 0, Original!)
是不是写错了呢?
OpenSheet(ls_winstr, w_main, 0, Original!)
回复
相关推荐
发帖
PowerBuilder
创建于2007-09-28

864

社区成员

PowerBuilder 相关问题讨论
申请成为版主
帖子事件
创建了帖子
2011-04-06 10:35
社区公告
暂无公告