DropTreeBuilder
用于给列生成下拉目录树,下拉目录树能够非常高效地输入数据:
DropTreeBuilder成员介绍:
属性
TreeFile:
字符型,指定目录树文件
TreeString: 字符型,指定用于生成目录树的字符串
SourceTable: DataTable类型,指定目录树表
TreeFilter: 字符型,用于设置从SourceTable取数据生成目录树的过滤条件。
TreeSort: 字符型,用于设置生成目录树的排序列。
ReceiveCols: 字符型,指定数据接收列
TreeCols: 字符型,指定目录树列
SourceCols: 字符型,指定数据来源列
PathSeparator: 字符型,路径分割符号
ContentSeparator:字符型,指定内容分割符号
SeparateContent: 逻辑型,是否分割内容
TreeWidth: 整数型,指定目录树宽度
TreeHeight: 整数型,指定目录树高度
方法
Build: 生成下拉目录树。
创建目录树文件
在使用下拉目录树之前,通常需要先创建一个目录树文件。
在菜单的“杂项”功能区,单击下面的按钮:
可以打开目录树编辑窗口,可以在这里创建目录树文件,也可以打开一个现有的目录树文件修改:
示例一
创建了目录树文件后,就可以使用目录树录入数据了。
假定有一个表,希望使用下图所示的目录树输入数据:
可以在项目事件AfterOpenProject事件中加入下面的代码:
Dim
tb As New DropTreeBuilder提示:目录树文件最好放在项目的Attachments文件夹中,否则必须指定明确的路径。
示例二
在网络环境下使用文件型目录树不太方便,更方便的是将目录树存储在数据表中,用于存储目录树的列最好是备注型
虽然目录树文件的后缀名为foxtr,但其实是一个纯文本文件,可以用记事本打开,将其内容复制粘贴到数据表中的用于存储目录树的备注列中。
Dim
s As
String
'请在这里设置代码从数据表中获得目录树字符串,并赋值给变量s
Dim tb As
New
DropTreeBuilder
tb.TreeString = s '设置目录树字符串
tb.ReceiveCols = "大类|二类|三类"
'指定数据接收列
Tables("订单").Cols("大类").DropTree
= tb.Build()
提示:在窗口设计的章节,我们还会介绍如何自己编写一个目录树编辑器,这样可以将目录树编辑和自己的系统更为紧密地结合起来。
示例三
有的时候,目录树一个节点的内容,可能包括多项内容。
例如对于下面的目录树,二级节点就包括县市、区号、邮编三项内容,三项内容用符号“|”隔开了:
在使用目录数列表的时候,为了将二级节点的三项内容对应地填入县市、区号、邮编三列中,可以如下设置代码:
Dim
tb As New DropTreeBuilder这样当我们选择某个节点的时候,二级节点的内容能够对应地输入到县市、区号、邮编三列中:
示例四
除了根据文件,还可以根据数据表生成目录树。
例如有一个行政区域表,结构如下:
我们希望在输入数据的时候,能够根据该数据表自动生成目录树,用于输入省和县市列的内容,可以如下设置代码:
Dim
tb As New DropTreeBuilder即可得到下图所示的下拉目录树:
示例五
上面的下拉目录树只能输入省、县市两列的内容,而区号和邮编由于没有参与目录树的生成,所以无法输入到数据表中。
不过我们可以通过明确指定数据来源列,来输入区号和邮编两列的数据:
Dim
tb As New DropTreeBuilder通过上面的设置后,可以正常输入区号和邮编,尽管这两列并没有用于生成目录树:
示例六
有的时候,用于生成目录树的表,其中一列的内容包括多个栏目的内容。
例如下面的县市列,就包括县市、区号、邮编三个栏目的内容:
为了在目标表中,能够将上图中县市列的内容拆分成3个部分,对应地输入到县市、区号、邮编三列中,可以如下设置代码:
Dim
tb As New DropTreeBuilder示例七
有的时候,目录树表的所有分类内容都在同一列中,如下图:
如果需要根据这一列的内容,来生成一个多层的目录树,指定目录树列的时候,应该将列名用大括号括起来:
Dim
tb As New DropTreeBuilder