Foxtable(狐表)用户栏目专家坐堂 → [求助]遍历窗口控件


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

主题:[求助]遍历窗口控件

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


加好友 发短信
等级:三尾狐 帖子:644 积分:4130 威望:0 精华:0 注册:2016/10/19 16:45:00
[求助]遍历窗口控件  发帖心情 Post By:2017/1/15 9:21:00 [只看该作者]

老师,我希望在窗口1中的目录树遍历所有窗口和窗口控件后赋值给窗口表
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:集合窗口控件.table



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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/1/15 11:26:00 [只看该作者]

内部函数

 

Dim tv As WinForm.TreeView = Args(0)

tv.Nodes.Clear

Dim nd As WinForm.TreeNode
Dim name As String
Dim sname() As String

For Each f As WinForm.Form In Forms
    name = f.Category
    sname = name.Split("\")
    Dim frmnd As WinForm.TreeNode
    If sname.Length = 1 AndAlso sname(0) = "" Then
        frmnd = tv.Nodes.Add(f.name)
    Else
        If tv.Nodes.Contains(sname(0)) = False Then
            nd = tv.Nodes.Add(sname(0))
        Else
            nd = tv.Nodes(sname(0))
        End If
        For i As Integer = 1 To sname.Length - 1
            If nd.Nodes.Contains(sname(i)) = False Then
                nd = nd.Nodes.Add(sname(i))
            Else
                nd = nd.Nodes(sname(i))
            End If
        Next
        frmnd = nd.Nodes.Add(f.name)
    End If
    Dim opened = f.Opened
    f.Open
    For Each c As object In f.controls
        frmnd.Nodes.Add(c.name)
    Next
    If opened = False Then f.Close
Next


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


加好友 发短信
等级:三尾狐 帖子:644 积分:4130 威望:0 精华:0 注册:2016/10/19 16:45:00
  发帖心情 Post By:2017/1/15 11:46:00 [只看该作者]

谢谢老师,控件边上能显示该控件的标题吗?

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/1/15 12:00:00 [只看该作者]

以下是引用苏州老街在2017/1/15 11:46:00的发言:
谢谢老师,控件边上能显示该控件的标题吗?

 

请回头,把foxtable的帮助文档重新看一遍。

 

Dim tv As WinForm.TreeView = Args(0)

tv.Nodes.Clear

Dim nd As WinForm.TreeNode
Dim name As String
Dim sname() As String

For Each f As WinForm.Form In Forms
    name = f.Category
    sname = name.Split("\")
    Dim frmnd As WinForm.TreeNode
    If sname.Length = 1 AndAlso sname(0) = "" Then
        frmnd = tv.Nodes.Add(f.name)
    Else
        If tv.Nodes.Contains(sname(0)) = False Then
            nd = tv.Nodes.Add(sname(0))
        Else
            nd = tv.Nodes(sname(0))
        End If
        For i As Integer = 1 To sname.Length - 1
            If nd.Nodes.Contains(sname(i)) = False Then
                nd = nd.Nodes.Add(sname(i))
            Else
                nd = nd.Nodes(sname(i))
            End If
        Next
        frmnd = nd.Nodes.Add(f.name)
    End If
    Dim opened = f.Opened
    f.Open
    For Each c As object In f.controls
        try
            frmnd.Nodes.Add(c.name, c.name & " | " & c.Text)
        catch ex As exception
            frmnd.Nodes.Add(c.name)
        End try
    Next
    If opened = False Then f.Close
Next


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


加好友 发短信
等级:三尾狐 帖子:644 积分:4130 威望:0 精华:0 注册:2016/10/19 16:45:00
  发帖心情 Post By:2017/1/15 13:35:00 [只看该作者]

老师,在遍历控件时能否让窗口不打开或很快。

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/1/15 14:20:00 [只看该作者]

以下是引用苏州老街在2017/1/15 13:35:00的发言:
老师,在遍历控件时能否让窗口不打开或很快。

 

必须打开窗口,才能获取控件。

 

你可以在你开发结束以后,再执行一次代码,把所有的数据,存放到一个表格里面,以后根据表格数据生成目录树。


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


加好友 发短信
等级:三尾狐 帖子:644 积分:4130 威望:0 精华:0 注册:2016/10/19 16:45:00
  发帖心情 Post By:2017/1/15 14:44:00 [只看该作者]

老师,是把所有的控件赋值给表格,控件生成的目录树赋值不了授权表啊,老师有要烦你了。

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/1/15 14:46:00 [只看该作者]

以下是引用苏州老街在2017/1/15 14:44:00的发言:
老师,是把所有的控件赋值给表格,控件生成的目录树赋值不了授权表啊,老师有要烦你了。

 

参考表的目录树的代码。

 

不会做,请重新看视频教程 http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=67187

 


 回到顶部
帅哥哟,离线,有人找我吗?
苏州老街
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:644 积分:4130 威望:0 精华:0 注册:2016/10/19 16:45:00
  发帖心情 Post By:2017/1/15 17:17:00 [只看该作者]

老师,我明年慢慢学,这次麻烦老师帮忙。谢谢,

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/1/15 17:31:00 [只看该作者]

If e.Node.Level = 0 Then
    Tables("授权表").current("窗口名") = e.Node.Name
ElseIf e.Node.Level >= 1 Then
    Tables("授权表").current("窗口名") = e.Node.ParentNode.Name
    Tables("授权表").current("控件名") = e.Node.Name
End If


 回到顶部
总数 20 1 2 下一页