Table的双重身份

窗口中的Table具备双重身份,使用不同身份时,类型不同,名称也不同。

作为控件

当作为窗口中的控件时,其类型为WinForm.Table,名称就是设计窗口时赋予的名称。

示例

Dim t As WinForm.Table = e.Form.Controls("Table1")
t.SetBounds(
0,0,400,300)

作为Table

当作为普通的Table使用的时候,其类型自然是Table。
至于名称则要区分两种情况。

如果类型为Normal,且非副本,此时窗口并不会创建新的Table,只是将原来的Table移到窗口中显示,所以其名称自然就等于绑定的Table名称。
例如将订单表移到主窗口后,对其的调用还是和原来一样:

Tables("订单").AllowEdit = True

如果类型为Normal,且为副本,或者类型为SQLTable、SQLQuery,此时窗口会创建一个新的Table,此新Table的名称为:

窗口名称_控件名称

假定这个Table的名称为Table1,且在窗口1中,那么代码中必须使用“窗口1_Table1”的名称来调用此Table:

Tables("窗口1_Table1").AllowEdit = False

获得对应的DataTable

对于Normal型Table,不管是副本还是非副本,其对应的DataTable的名称,就是其绑定的表的名称,例如:

DataTables("订单").AllowEdit = True

对于SQLTable、SQLQuery型Table,对应的DataTable名称为:

窗口名称_控件名称

例如:

DataTables("窗口1_Table1").AllowEdit = False

也可以通过Table的DataTable属性返回其对应的DataTable,例如:

Tables("窗口1_Table1").DataTable.Load()

通过控件的Table属性获得对应的Table和DataTable

Table控件本身有一个Table属性,用于返回其绑定的Table,例如:

Dim wbl As WinForm.Table = e.Form.Controls("Table1")
Dim
tbl As Table = wbl.Table
tbl
.DataTable.Save()

上面的代码用于保存Table控件绑定的表,代码是通用的,和Table控件的类型无关,所以无需为不同类型的Table控件编写不同的代码。


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