以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  请教胡大,如何通过表名称获得所在的窗口表控件名  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=26416)

--  作者:sgs
--  发布时间: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编辑过]

--  作者:狐狸爸爸
--  发布时间:2012/12/4 8:57:00
--  
这个没有办法知道的。
--  作者:lin_hailun
--  发布时间:2012/12/4 9:08:00
--  
 没看懂,不是可以对表名进行处理的么?

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

--  作者:sgs
--  发布时间: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
--  发布时间:2012/12/4 10:07:00
--  
请教胡大,如果此路不通,有无变通方法
--  作者:lin_hailun
--  发布时间:2012/12/4 10:24:00
--  
 没有变通的方法,只有查找的方法。走到这一步,是否项目设计估计出现问题了,说说你要实现的。

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

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

--  作者:sgs
--  发布时间:2012/12/4 10:40:00
--  

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

 


--  作者:狐狸爸爸
--  发布时间: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

 

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