动态目录树列表
利用DropTreeBuilder,同样可以动态生成目录树列表。
本节的内容可以参考CaseStudy目录下的文件:动态目录树列表.Table
假定有一个“行政区域“表,结构如下:
我们希望在客户表输入数据的时候,能够根据该”行政区域“表自动生成目录树,用于输入省、县市、区号、邮编等列的内容 。
为此可以在项目的AfterOpenProject事件中加入代码:
Dim
tb As New DropTreeBuilder这样打开项目后,选择客户表的省列,单击下拉按钮,即可出现下图所示的目录树,选择某个县市,可以一次输入省、县市、区号和邮编四列的内容:
上面的代码设置在AfterOpenProject事件中,这有一个问题,就是在“行政区域”表中修改数据后,上述代码生成的目录树不会自动更新,除非你重新打开项目文件。
为此可以将代码移至MainTableChanged事件中:
If
MainTable.Name = "客户" Then这样每次选择客户表,都会根据“行政区域”表的最新数据,重新生成目录树列表。
不管是动态列表项目还是动态目录树列表,合理选择代码位置是很重要的,如果项目来源表很少需要更新,例如上面的行政区域表,那么将代码放在项目事件AfterOpenProject最为合理,偶尔更新的时候,也只需重新打开项目文件即可;如果项目来源表经常需要在运行过程中更新,那么应该将代码放在项目事件MainTableChanged中;如果需要根据其它列已经输入的内容来生成列表项目或目录树,那么就只能将代码放在表事件PrepareEdit中了。