以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  自行设计下拉目录树  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=33574)

--  作者:wqb1102
--  发布时间:2013/5/21 9:25:00
--  自行设计下拉目录树
在帮助: 自行设计下拉目录树中,只是一个表使用下拉目录树,

TreeView(目录树)的NodeMouseClick事件代码设置为:

If e.Node.Level = 1 Then \'如果单击的是第二层节点
    Dim ps() As String = e.Node.FullPath.Split("\\")
    Dim tr As Row = Tables("客户").Current
    Dim dr As DataRow = DataTables("行政区域").Find("省市 = \'" & ps(0) & "\' And 县市 = \'" & ps(1) & "\'")
    If dr IsNot Nothing Then \'如果在行政区域表找到对应的行,则将此行的值写入客户表的当前行.
        
tr("省市") = dr("省市")
        tr("县市") = dr("县市")
        tr("区号") = dr("区号")
        tr("邮编") = dr("邮编")
        e.Form.DropDownBox.Value = tr("县市"\'这行不是多余的,省略此行,无法在表中正常使用此下拉窗口输入数据.
    
End If
    e.Form.DropDownBox.CloseDropdown()  \'关闭下拉目录树
End
 If

在使用中有几个表需要使用此目录树,分别按上述代码设置时,发现在一个表中使用后,其他几个表都修改了。

如果是几个表都需要使用此目录树,该如何设置:只修改上述代码,或另写代码放在目录树全局事件中。不知如何设置。

谢谢!

[此贴子已经被作者于2013-5-21 9:27:31编辑过]

--  作者:Bin
--  发布时间:2013/5/21 9:29:00
--  
参考这里做 http://www.foxtable.com/help/topics/2502.htm
--  作者:wqb1102
--  发布时间:2013/5/21 9:33:00
--  
我是想能几个表共用此下拉窗口?
[此贴子已经被作者于2013-5-21 9:34:34编辑过]

--  作者:Bin
--  发布时间:2013/5/21 9:52:00
--  
可以的,你仔细看例子中的全局函数代码. 你把列名改为参数传入不就OK了啊?
--  作者:wqb1102
--  发布时间:2013/5/21 10:20:00
--  
那个全局函数?
比如有:出库、客户、退货三个表都需要使用此下拉窗口,如何设置:Dim tr As Row = Tables("客户").Current,或将tr、dr改成tr1、dr1;tr2、dr2.

--  作者:Bin
--  发布时间:2013/5/21 10:24:00
--  
你先认真看一下我发给你的那一页帮助,参考一下. 你理解了怎么递归生成树, 自然你就懂怎么套用了.
--  作者:wqb1102
--  发布时间:2013/5/21 11:29:00
--  
太难了,看了半天,只看出是如何设置目录树,好象没有做好下拉窗口后的应用。
--  作者:wqb1102
--  发布时间:2013/5/21 15:01:00
--  

DropTable

如果从表中的某列打开下拉窗口,可以通过DropTable返回对应的表(Table类型),通过DropCol返回对应的列(Col类型)。
有了这两个属性,不同的表或不同的列,共用一个下拉窗口,会更加方便;对下拉窗口进行条件设置也会更加容易。


在帮助中没有详细说明,在项目中没有找到这个属性。