用目录树输入数据

我们已经知道,用DropTreeBuilder可以为列生成下拉目录树,用于快速输入多列数据。
本节我们看看如何自己编码实现用目录树输入数据,这并非多此一举,毕竟有时我们会有一些自己的特殊需要,DropTreeBuilder并不一定能够满足我们的要求。

本节内容可以参考CaseStudy目录下的示例文件"用目录树输入数据.Table"
该示例文件有一个行政区域表,已经输入所有的县市及其区号、邮编,以及所属的省市。
我们希望选择客户资料表的省市列的时候,能够出现一个按钮,单击该按钮即可弹出一个窗口,以目录树的形式列出所有的行政区域,双击某个节点,即可自动输入对应的省市、县市、邮编和区号,如下图所示:

实现的过程很简单:

1、在行政区域表新建一个窗口,窗口类型设为模式型。
2、在窗口中加入一个目录树控件。
3、将窗口的AfterLoad事件设为:

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

4、将目录树的NodeMouseDoubleClick事件设为:

If e.Node.Level = 0 Then '如果是顶层节点
   
Return '则返回
End
If
Dim
Vals() As String = e.Node.FullPath.Split("\")
Dim
Filter As String = "[省市] = '" & Vals(0) & "' And [县市] = '" & Vals(1) & "'"
Dim
dr As DataRow = DataTables("行政区域").Find(Filter)
Dim
r As Row = Tables("客户资料").Current
r(
"省市") = dr("省市")
r(
"县市") = dr("县市")
r(
"区号") = dr("区号")
r(
"邮编") = dr("邮编"
)
e.Form.Close()

5、最后选择客户资料表,将其CellButtonClick事件设为:

Forms("窗口1").Open()
e.Cancel =
True


本页地址:http://www.foxtable.com/webhelp/topics/1483.htm