分享一下,树形数据窗口双击那一层自动展开或收缩(数据窗口DoubleClicked事件中处理)

来源:互联网 发布:2010年流行的网络歌曲 编辑:程序博客网 时间:2024/05/17 06:52

分享一下,树形数据窗口双击那一层自动展开或收缩(数据窗口DoubleClicked事件中处理)
//TreeView Datawindow 双击收缩
//双击那一层对象则自带收缩(不用去点 + / - )


string ls_dwProcessing,ls_band
//树型dw的展开收缩处理
ls_dwProcessing=this.describe('DataWindow.Processing')
If ls_dwProcessing='8'  or ls_dwProcessing='9' Then
    ls_band=this.describe(dwo.Name+".band")
    //tree.level.1
    //n_cst_string 
    If pos(ls_band,'tree.level.') >0 Then
        n_cst_string  lstr_c
        string ls_parstr[],ls_bandrow[]
        int li_level
long ll_row
        lstr_c.of_parsetoarray(ls_band,'.',ls_parstr)//PFC 对象 把字串 分配成数组(也可以自行写)
        If upperbound(ls_parstr[])>=3 Then
            If isnumber(ls_parstr[3])Then
                li_level=integer(ls_parstr[3])
                //describe("evaluate(' first( getrow() for group 1 )',"+string(getrow())+")")
                //describe("evaluate(' first( getrow() for group 1 )',"+first( getrow() for group 1 )+")")
                //ll_row= this.getrow()//long(describe("evaluate(' first( getrow() for group "+string(li_level)+" )',compute_3)"))
                //取双击的所在 band 的行
                ls_band=GetBandAtPointer()
                lstr_c.of_parsetoarray(ls_band,'~t',ls_bandrow)
                If upperbound(ls_bandrow[])>=2 Then 
                    ll_row=long(ls_bandrow[2])
                    If ll_row=0 Then ll_row= this.getrow()
                Else
                    ll_row= this.getrow()
                End If
                If this.isexpanded( ll_row, li_level) Then 
                    this.CollapseAllChildren(ll_row,li_level)
                    //this.CollapseAll()
                Else
                    this.ExpandAllChildren(ll_row,li_level)
                    //this.ExpandAll()
                End If
                
            End If
        End If
    End If

End If