Foxtable(狐表)用户栏目专家坐堂 → 请教胡大,如何通过表名称获得所在的窗口表控件名


  共有10842人关注过本帖树形打印复制链接

主题:请教胡大,如何通过表名称获得所在的窗口表控件名

帅哥哟,离线,有人找我吗?
sgs
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:365 积分:2693 威望:0 精华:1 注册:2011/11/25 7:55:00
请教胡大,如何通过表名称获得所在的窗口表控件名  发帖心情 Post By:2012/12/3 18:20:00 [只看该作者]

窗口中有个table控件,如果仅仅知道table的名称,能否获得所在窗口表控件的名称

注:我这个表名有多个下划线。所以通过下划线方法截取窗口名可能行不通

有没有类似table.winform.table.form之类的方法,请指教

 

我说的有点绕,意思是这样的:

 

Dim t As Table = Tables("窗口1_Table1")
有什么办法能知道这个窗口的table控件的名称吗?“也就是Table1”

前提是不知道窗口的名称,也不固定下划线

[此贴子已经被作者于2012-12-3 18:43:44编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/12/4 8:57:00 [只看该作者]

这个没有办法知道的。

 回到顶部
帅哥哟,离线,有人找我吗?
lin_hailun
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/12/4 9:08:00 [只看该作者]

 没看懂,不是可以对表名进行处理的么?

 比如最后一个下划线,然后获得控件名(除非你这个控件名有多个下划线)

 回到顶部
帅哥哟,离线,有人找我吗?
sgs
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:365 积分:2693 威望:0 精华:1 注册:2011/11/25 7:55:00
  发帖心情 Post By:2012/12/4 9:08:00 [只看该作者]

既然知道winform.table绑定的table名称是

dim frm as winform.form = forms("窗口1")

Dim t As Table = frm.controls("Table1").table

假如知道了t的类型不属于(Normal,且非副本)

那么

Select Case t.TableType
    Case TableTypeEnum.SQLTable,TableTypeEnum.SQLQuery
         dim tbl as winform.table = t.????

End Select

胡大想想办法呗



 回到顶部
帅哥哟,离线,有人找我吗?
sgs
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:365 积分:2693 威望:0 精华:1 注册:2011/11/25 7:55:00
  发帖心情 Post By:2012/12/4 10:07:00 [只看该作者]

请教胡大,如果此路不通,有无变通方法

 回到顶部
帅哥哟,离线,有人找我吗?
lin_hailun
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/12/4 10:24:00 [只看该作者]

 没有变通的方法,只有查找的方法。走到这一步,是否项目设计估计出现问题了,说说你要实现的。

 查找的方法就是:用_分割出字符串,查找满足分割字符的窗口,然后遍历窗口,查找满足字符的控件。

 直接获取应该是不行的,因为窗口表没有所谓的从属关系,只是使用窗口名和控件名确保表名的唯一,仅此而已。
[此贴子已经被作者于2012-12-4 10:24:39编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
sgs
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:365 积分:2693 威望:0 精华:1 注册:2011/11/25 7:55:00
  发帖心情 Post By:2012/12/4 10:40:00 [只看该作者]

看来还是要改下窗口表的名称了,主要是原来的窗口表有多个下划线,所以才想用其他方式获得table控件名称

 


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/12/4 10:41:00 [只看该作者]

For Each f As winform.Form In Forms
    If f.Opened
        For Each c  As winform.control In f.controls
            If c.Gettype.Name = "Table" Then
                Dim g As WinForm.Table = c
                If g.Table.name = "表A"  Then
                    messagebox.show(f.name & "|" & c.name)
                End If
            End If
        Next
    End If
Next

 

测试通过,预览窗口不行,正常打开窗口可以。


 回到顶部