当前位置: 代码迷 >> PB >> PB打开子窗口不能,瞥高手指教
  详细解决方案

PB打开子窗口不能,瞥高手指教

热度:21   发布时间:2016-04-29 05:56:23.0
PB打开子窗口不能,望高手指教
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


  相关解决方案