以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]如何关闭不属于本表的列窗口  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=173525)

--  作者:流水
--  发布时间:2021/12/3 14:36:00
--  [求助]如何关闭不属于本表的列窗口
求助:如何关闭不是本表的列窗口,当打开了父表列窗口,在打开子表列窗口时,想让父表的列窗口自动关闭;

b.CloseWindow

--  作者:有点蓝
--  发布时间:2021/12/3 14:47:00
--  
参考:http://www.foxtable.com/webhelp/topics/1437.htm
--  作者:流水
--  发布时间:2021/12/3 14:52:00
--  
在同一张表多个列窗口知道怎么自动关闭和打开,跨表就不知道怎么写了;怎么判断当前已打开的列窗口不熟当前表?
--  作者:有点蓝
--  发布时间:2021/12/3 15:08:00
--  
当前表不可能显示其它表的列窗口吧。

没有办法判断,直接根据表名关闭

Tables("某父表").Cols("照片").CloseWindow()

--  作者:流水
--  发布时间:2021/12/3 15:58:00
--  
关联表有的,父表先打开了列窗口,再打开子表的列窗口,父表的列窗口不会关闭,除非手动关闭,如果两个列窗口是同名的,就会分不清哪那个列窗口是哪个表的;
这里一个父表+3个子表,共四个列窗口,全都打开了,三个备注窗口对应三个子表,不知道哪个列窗口是哪个表的;

图片点击可在新窗口打开查看此主题相关图片如下:1638518161(1).png
图片点击可在新窗口打开查看


--  作者:有点蓝
--  发布时间:2021/12/3 16:48:00
--  
到项目事件currenttablechanged事件,切换到某个关联表的时候,把其它表列窗口关闭

select case CurrentTable.Name 
  case "父表.子表1"
CurrentTable.Cols("备注").openWindow()
Tables("子表2").Cols("备注").CloseWindow()
Tables("子表3").Cols("备注").CloseWindow()
  case "父表.子表2"
CurrentTable.Cols("备注").openWindow()
Tables("子表1").Cols("备注").CloseWindow()
Tables("子表3").Cols("备注").CloseWindow()
  case "父表.子表3"
CurrentTable.Cols("备注").openWindow()
Tables("子表1").Cols("备注").CloseWindow()
Tables("子表2").Cols("备注").CloseWindow()

End If

--  作者:流水
--  发布时间:2021/12/3 17:08:00
--  
嗯嗯,谢谢,刚才在几个表里的AfterSelChange表事件里写了个遍历,也解决了,感谢感谢

If e.Table.Focused = True Then \'输入焦点是否在表
    Dim tb() As String = {"客商资料","客商资料.收货地址","客商资料.装机明细","客商资料.客户注意事项"}
    For t As Integer = 0 To tb.Length - 1
        If Tables.Contains(tb(t)) = True Then \'如果表存在
            Dim a() As String = {"备注","单证注意","注意事项"} \'定义字段
            For i As Integer = 0 To a.Length - 1
                If Tables(tb(t)).Cols.Contains(a(i)) = True Then \'如果字段存在
                    Dim b As Col = Tables(tb(t)).Cols(a(i)) \'命名列
                    If e.NewRange.ColSel = b.Index Then \'如果点击位置相同
                        If e.Table.Name = tb(t) \'如果是同一张表
                            b.OpenWindow \'打开列窗口
                        Else
                            b.CloseWindow \'关闭列窗口
                        End If
                    Else
                        b.CloseWindow
                    End If
                End If
            Next
        End If
    Next
End If