public subroutine of_opensheet (string win_type, string win_name, string win_parm);
window lw_sheet
lw_sheet = getfirstsheet()
do while isvalid(lw_sheet)
if trim(lw_sheet.tag) = trim(str_lastfunc.func_id) then
lw_sheet.bringtotop = true
exit
end if
lw_sheet = getnextsheet(lw_sheet)
loop
if not isvalid(lw_sheet) then
opensheetwithparm(lw_sheet,win_parm,win_name,this,20,layered!)
end if
end if
我点选主窗体的一个图标后,希望打开具体的某个程序。跑到如上的语句,应该是得到子窗口的名称,
但是现在的情况是:为什么得到lw_sheet就是null,
我在lw_sheet = getfirstsheet()的时候,lw_sheet是有值的,是window(29963444),
但是lw_sheet.tag就是“”,而getnextsheet(lw_sheet)就是null,
问题是:1.getfirstsheet()是哪个window的getfirstsheet(),
2.window(29963444)怎么查看具体哪个window,比如说w_xxx_1_0101之类的,
3.getnextsheet(lw_sheet)能帮我解释下意思吗?
4.怎样使我的程序能打开子窗体。
学习下,请高手指教
------解决方案--------------------
lw_sheet = getfirstsheet()
之后就判断lw_sheet是否有效
如果IsValid(lw_sheet)为 true ,代表lw_sheet有效,false无效
看看如下代码是否是你要的结果,没有win_name的窗口,就打开,有的话就激活已经打开的窗口
window lw_sheet
boolean lb_exist = false
lw_sheet = getfirstsheet()
if isvalid(lw_sheet) then
if lw_sheet.classname() = 'w_store_area' then
lw_sheet.SetFocus()
else
lw_sheet = getnextsheet( lw_sheet)
do while isvalid(lw_sheet)
if lw_sheet.classname() = 'w_store_area' then
lw_sheet.setfocus()
lb_exist = true
exit
end if
lw_sheet = getnextsheet( lw_sheet)
loop
if not lb_exist then
opensheetwithparm(lw_sheet,win_parm,win_name,this,20,layered!)
end if
end if
else
opensheetwithparm(lw_sheet,win_parm,win_name,this,20,layered!)
end if