以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  如何在窗口中实现下拉目录树列表?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=22735)

--  作者:Fotable
--  发布时间:2012/8/22 15:22:00
--  如何在窗口中实现下拉目录树列表?

在主表设置  列属性  -》目录树列表-》目录树表  可是实现 在表格内下拉自动生成一个目录树。

但如果我想在窗体绑定该字段也实现下拉目录树可以吗?


--  作者:Fotable
--  发布时间:2012/8/22 15:29:00
--  

自行设计下拉目录树

我们知道,在Foxtable只需经过简单的设置,即可在表中使用下拉目录树高效录入数据,无需编写任何代码。
我们也可以抛开内置的功能,自己设计一个下拉目录树来输入数据,不要以为这是多余的,因为:

1、内置的下拉目录树只能在表中使用,不能在窗口使用。
2、内置的下拉目录树有固定的套路,一些特殊需求可能无法满足,例如本例的下拉目录树,增加了刷新功能。

本示例请参考CaseStudy目录下的示例文件“下拉目录树.Table”。

此项目有两个表,分别为客户表和行政区域表,行政区域表为基础数据表,这个表已经输入了全国所有县级行政区域的资料,包括省市、市县、区号、邮编四列。
我们希望在客户表设计一个下图所示的输入窗口,单击县市列这个文本框的下拉按钮,能出现一个下拉目录树,此目录树会列出所有的省市和县市,选择某个县市,会自动输入省市、县市、区号、邮编四列的内容:

同时希望在表中的县市列,也能通过下拉目录树来输入这四列的内容:

 

设计步骤

一、设计下拉窗口

1、新建一个窗口,名为“窗口1”,窗口类型设置为“DropDownForm”。

2、窗口中插入一个TreeView(目录树)控件。

3、窗口的AfterLoad事件设置为:

Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
trv
.BuildTree("行政区域","省市|县市")

4、将刷新目录树按钮的代码设置为:

Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
trv
.BuildTree("行政区域","省市|县市")

5、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

二、设计录入窗口

1、新建一个窗口,名为“窗口2”,窗口类型为“独立”。

2、插入几个输入框,分别绑定到各字段,其中县市列输入框是DropDownBox,其余各列是TextBox。

2、选择县市输入框,将其下拉窗口设置为“窗口1”:

三、在项目事件AfterOpenProject加入代码:

Tables("客户").Cols("县市").DropForm = "窗口1" \'客户表的县市列也采用我们设计的下拉窗口输入数据。


--  作者:狐狸爸爸
--  发布时间:2012/8/22 16:15:00
--  

帮助关于这节的内容,表和窗口都有介绍的:

http://www.foxtable.com/help/topics/2350.htm