二进制列的多文件管理
本节的内容可以参考CaseStudy目录下的示例文件:多文件二进制列.Table
该示例文件使用了一个Access文件作为外部数据源,文件名为:多文件二进制列.mdb
该示例演示了通过二进制列来设计一个多文件管理器:
这个文件管理器和Foxtable内置的文件管理器是相似的。
实际上二进制列只能插入一个文件,并没有办法插入多个文件。
当需要管理多个文件时,我们只能使用关联表,新建一个专门用于插入文件的表,作为子表,和原来的表建立关联。
设计过程:
1、删除员工表中原来用于插入文件的附件列。
2、新建一个表,名为“附件”,包括编号(整数型)、附件(二进制型)、文件名(字符型)、CRC值(字符型)等列,当然_Identify列是必须有的:
3、将这个附件表作为外部表添加到Foxtable中,添加的时候,请排除附件和CRC值这两列:
4、员工表和附件表建立关联,员工表作为父表,关联列为"_Identify",附件表作为子表,关联列为"编号":
5、设计一个下图所示的窗口:
6、窗口中的Table控件绑定到关联表"员工.附件",允许编辑设置为False,显示行号设置为False, 网格线宽度设置为0,整行突出设置为True,显示列设置为"文件名|100"。
7、窗口的AfterLoad事件代码设置为:
Tables("员工.附件").ExtendLastCol
= True
'水平方向自动填满
Tables("员工.附件").SetHeaderRowHeight(0,-1)
'隐藏列标题
DataTables("附件").SysStyles("EmptyArea").BackColor
= Color.White
'空白区的背景设置为白色
这样Table控件的外观就和ListBox(列表框)控件看起来是一样的。
8、窗口各按钮的代码:
按钮 | 代码 |
增加 |
Dim
dlg As
New
OpenFileDialog |
删除 |
Dim
r As
Row = Tables("员工.附件").Current |
清除 |
For
Each dr
As DataRow
In Tables("员工").Current.DataRow.GetChildRows("附件") |
打开 |
If
Tables("员工.附件").Current
Is Nothing
Then |
9、最后将附件表的DoubleClick事件代码设置为:
If
Forms("窗口1").Opened()
Then '如果文件管理窗口已经打开
If e.Table.name
= "员工.附件"
'如果双击的是关联表
Dim
btn As
WinForm.Button
= Forms("窗口1").Controls("Button4")
btn.PerformClick()
'模拟单击打开文件按钮
End If
End If
这样在Table控件中双击某文件,就会模拟单击打开按钮,从而打开所双击的文件。