以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]目录树  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=143944)

--  作者:江南小镇
--  发布时间:2019/12/6 18:51:00
--  [求助]目录树
老师,想直接引用窗口绑定的非副本表(通讯录)。


If e.Node.Name = "显示所有行" Then
    Tables(e.Form.Name & "_Table2").Filter = ""
Else
    Dim FilterCol() As String = e.Form.Controls("复选").Value.Split(",")
    Dim TmpStr() As String = e.Node.FullPath.Split("\\")
    Dim FilterStr As String
    For i As Integer = 0 To e.Node.Level
        FilterStr = FilterStr & "[" & FilterCol(i) & "] = \'" & TmpStr(i) & "\' And "
    Next
    FilterStr = FilterStr.SubString(0,FilterStr.Length - 5)
    Tables(e.Form.Name & "_Table2").Filter = FilterStr 
End If

--  作者:有点蓝
--  发布时间:2019/12/6 20:31:00
--  
normal非副本表,直接写主表名称即可
Tables(“通讯录”).Filter = ""

如果要通用一点,可以这样

e.Form.Controls("Table2").Table.Filter = ""

--  作者:江南小镇
--  发布时间:2019/12/6 22:21:00
--  
老师,这是窗口代码和内部函数也要修改成直接引用窗口非副本表。谢谢老师

With Tables(e.Form.Name & "_Table2")
    .EnterKeyActionDown = True
    .AutoSizeCols
    Dim dz_FilterCol As WinForm.CheckedComboBox = e.Form.Controls("复选")
    For Each C As Col In .Cols
        dz_FilterCol.Items.Add(C.Name)
    Next
    dz_FilterCol.Value = "客户供应商,姓名"
End With




[此贴子已经被作者于2019/12/6 22:22:46编辑过]

--  作者:有点蓝
--  发布时间:2019/12/6 22:33:00
--  
用法完全一样
--  作者:江南小镇
--  发布时间:2019/12/6 22:51:00
--  
老师,这组代码报错。


.EnterKeyActionDown = True

--  作者:有点蓝
--  发布时间:2019/12/6 22:56:00
--  
报什么错?
--  作者:江南小镇
--  发布时间:2019/12/7 7:19:00
--  
老师,代码报错。
With e.Form.Controls("Table2")
 .EnterKeyActionDown = True
    .AutoSizeCols
    Dim dz_FilterCol As WinForm.CheckedComboBox = e.Form.Controls("复选")
    For Each C As Col In .Cols
        dz_FilterCol.Items.Add(C.Name)
    Next
    dz_FilterCol.Value = "客户供应商,姓名"
End With



.NET Framework 版本:2.0.50727.8669
Foxtable 版本:2017.4.22.1
错误所在事件:窗口,供应商客户信息,AfterLoad
详细错误信息:
未找到类型“Table”的公共成员“EnterKeyActionDown”。


--  作者:有点蓝
--  发布时间:2019/12/7 9:06:00
--  
既然不懂就要认真分析查看别人是怎么用的。不懂还闭着眼睛用那就是在给自己找麻烦,本来几分钟就能解决的问题...

With e.Form.Controls("Table2").table

--  作者:江南小镇
--  发布时间:2019/12/7 9:51:00
--  
老师,下面代码有错了。
If e.Node.Name = "显示所有行" Then
   \' Tables(e.Form.Name & "_Table2").Filter = ""
e.Form.Controls("Table2").Table.Filter = ""

Else
    Dim FilterCol() As String = e.Form.Controls("复选").Value.Split(",")
    Dim TmpStr() As String = e.Node.FullPath.Split("\\")
    Dim FilterStr As String
    For i As Integer = 0 To e.Node.Level
        FilterStr = FilterStr & "[" & FilterCol(i) & "] = \'" & TmpStr(i) & "\' And "
    Next
    FilterStr = FilterStr.SubString(0,FilterStr.Length - 5)
    \'Tables(e.Form.Name & "_Table2").Filter = FilterStr 
e.Form.Controls("Table2").Filter = FilterStr 
End If


.NET Framework 版本:2.0.50727.8669
Foxtable 版本:2017.4.22.1
错误所在事件:窗口,供应商客户信息,筛选树,AfterSelectNode
详细错误信息:
未找到类型"Table"的公共成员"Filter".

--  作者:有点蓝
--  发布时间:2019/12/7 11:06:00
--  
同样的问题,请自行解决