以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  窗口Table的双重身份  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=5113)

--  作者:狐狸爸爸
--  发布时间:2009/11/24 9:09:00
--  窗口Table的双重身份

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

[此贴子已经被作者于2009-11-24 9:09:32编辑过]

--  作者:yangming
--  发布时间:2009/11/24 10:05:00
--  
再次学习
--  作者:程兴刚
--  发布时间:2009/11/24 12:38:00
--  
呵呵,这回应该分得清了!
--  作者:mr725
--  发布时间:2009/11/24 13:01:00
--  

是清楚了~ , 不过用不同的方式加载了带有数据的窗口Table后,再用另一方式加载数据时经常还是会有:不存在“窗口_Tatlbe1”的提示或加载不了数据的情况。(指副本或Sql型的Table)

是不是在用不同方式加载数据前都要清除掉原来的Table?再来重建并加载数据? 这一点一直没搞明白。

[此贴子已经被作者于2009-11-24 13:05:08编辑过]

--  作者:cpayinyuan
--  发布时间:2009/11/25 12:23:00
--  
以下是引用狐狸爸爸在2009-11-24 9:09:00的发言:

Table的双重身份



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


作为控件

……


作为Table


……

    与其说是Table有双重身份,还不如说在狐表中有两种不同的Table,一个是窗口控件,一个是表(可见的表)。
    这本来就是两个完全不同的两个东西,而不是一个东西有双重身份,不知贺老师为什么非要让它叫同样的名字(两者都叫Table),给新用户容易造成混淆,增加不必要的麻烦。

[此贴子已经被作者于2009-11-25 12:29:01编辑过]