自行设计下拉目录树
我们知道,在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 tr
As Row =
Tables("客户").Current
Dim dr
As DataRow =
e.Node.DataRow
'获取生成此节点的DataRow
tr("省市")
= dr("省市")
tr("县市")
= dr("县市")
tr("区号")
= dr("区号")
tr("邮编")
= dr("邮编")
e.Form.DropDownBox.Value
= tr("县市")
'这行不是多余的,省略此行,无法在表中正常使用此下拉窗口输入数据.
| e.Form.DropDownBox.CloseDropdown()
End
If
二、设计录入窗口
1、新建一个窗口,名为“窗口2”,窗口类型为“独立”。
2、插入几个输入框,分别绑定到各字段,其中县市列输入框是DropDownBox,其余各列是TextBox。
2、选择县市输入框,将其下拉窗口设置为“窗口1”:
三、在项目事件AfterOpenProject加入代码:
Tables("客户").Cols("县市").DropForm = "窗口1" '客户表的县市列也采用我们设计的下拉窗口输入数据。