设置Table

可以利用下表中的属性设置Table:

属性名 说明
AllowEdit 是否允许用户修改表中数据
AllowAddNew 是否允许用户增加行
AutoAddNew 是否自动增加行
AllowDelete 是否允许用户删除行
AllowLockRow 是否允许用户锁定行
AllowUnlockRow 是否允许用户取消锁定行
EnterKeyActionDown 按回车键是否向下移到另一单元格
TabKeyActionDown 按Tab键是否向下移到另一单元格

你也许已经留意到,上述属性DataTable也是具备的。
例如AllowEdit属性,在Table和DataTable都有,那么两者如何配合使用呢?
原则是:Table的同名属性优先。
如果Table没有设置过该属性的值,那么从DataTable继承,如果Table已经设置了该属性的值,那么以Table的设置为准。

例如在一个简单的订单管理系统中,产品表和订单表通过产品编号建立关联,客户表和订单表通过客户编号建立关联。
现在希望产品表内容只能在Tables("产品")修改,也就是只能在主表修改,不能在关联表修改,可以这样设置代码:

DataTables("产品").AllowEdit = False
Tables
("产品").AllowEdit = True

由于Tables("产品")的AllowEdit属性被设置为True,所以它是可以编辑的。
其它基于DataTables("产品")的Table,例如Tables("订单.产品")、Tables("客户.订单.产品"),因为他们没有设置AllowEdit属性,所以其AllowEdit属性的值从DataTables("产品")继承,而DataTables("产品")的AllowEdit属性被设为False,所以这些Table是不能被编辑的,也就是被锁定了。

显然,只有不同的Table需要不同的设置时,才需要使用Table的设置属性,否则直接用DataTable的设置属性即可。

实际上DataTable本身是不能编辑的,因为用户根本就看不到DataTable,用户能编辑的只能是Table,所以AllowEdit属性本应该只出现在Table中, 而DataTable之所以也提供这个属性,只是为了统一设置的方便。
例如,假定不管是作为主表还是关联表,都要禁止编辑订单表,只需:

DataTables("订单").AllowEdit = False

如果DataTable没有AllowEdit属性,那么就必须逐个Table设置,代码显得繁琐很多:

Tables("订单").AllowEdit = False
Tables("产品.订单").AllowEdit = False
Tables("客户.订单").AllowEdit = False

我们这里只是以AllowEdit属性为例说明,所有DataTable和Table同时具备的属性,都有和AllowEdit属性一样的作用原理。


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