以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]例子中的《菜》  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=63601)

--  作者:twlg
--  发布时间:2015/1/24 14:33:00
--  [求助]例子中的《菜》

例子中的《菜单权限》窗口点击应用时,显示《未将对象引用设置到对象的实例。》,错误所在位置代码如下,求帮助

        For Each itm As RibbonMenu.RibbonItem In grp.Items
            If tv.Nodes("功能区").Nodes(rtb.Name).Nodes(grp.Name).Nodes.Contains(itm.Name) = False Then
                 tv.Nodes("功能区").Nodes(rtb.Name).Nodes(grp.Name).Nodes.Add(itm.Name)
            End If
        Next
    Next
Next

\'快速访问兰
Dim tv9 As WinForm.TreeView = e.Form.Controls("菜单权限")
tv9.Nodes.Add("快速访问栏")
For Each itm9 As object In QAT.Items
    Dim nd9 As object = tv9.Nodes("快速访问栏").Nodes.Add(itm9.Name)
    If itm9.Gettype.name <> "Button"   Then
       If  itm9.Gettype.name <> "Separator"  Then     
        For Each citm As object In itm9.items
             Dim cnd As object = nd9.Nodes.Add(citm.Name)
            If citm.Gettype.name <> "Button" Then  
                      If  citm.Gettype.name <> "Separator"  Then     
                For Each ccitm As RibbonMenu.RibbonItem In citm.items
                    Dim ccnd As object = cnd.Nodes.Add(ccitm.Name)
                Next
              End If
            End If   
        Next
     End If
    End If
Next
\'配置兰
tv9.Nodes.Add("配置栏")
For Each itm9 As object In ConfigBar.Items
    Dim nd9 As object = tv9.Nodes("配置栏").Nodes.Add(itm9.Name)
    If itm9.Gettype.name <> "Button"   Then
       If  itm9.Gettype.name <> "Separator"  Then     
        For Each citm As object In itm9.items
             Dim cnd As object = nd9.Nodes.Add(citm.Name)
            If citm.Gettype.name <> "Button" Then  
                      If  citm.Gettype.name <> "Separator"  Then     
                For Each ccitm As RibbonMenu.RibbonItem In citm.items
                    Dim ccnd As object = cnd.Nodes.Add(ccitm.Name)
                Next
              End If
            End If   
        Next
     End If
    End If
Next
Dim trv8 As WinForm.TreeView = e.Form.Controls("菜单权限")
For Each nd8 As WinForm.TreeNode In tv.AllNodes
    If nd8.Text.IndexOf("分割条") >= 0 Then
       nd8.Delete()
    End If
Next

e.Form.Controls("菜单权限").Enabled = False

  e.Form.Controls("Btn菜单授权保存").Enabled = False
  e.Form.Controls("Btn菜单授权清除").Enabled = False
  e.Form.Controls("Btn菜单授权编辑").Enabled = False
    e.Form.Controls("提示1").Text = "请选择用户!!!"

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理系统.foxdb


--  作者:Bin
--  发布时间:2015/1/24 14:34:00
--  
建议您用这个方法:
http://www.foxtable.com/help/topics/1485.htm

先找出是哪一行出错,然后分析原因,搞不定,可以在论坛发帖,贴出代码,并告诉我们运行到哪一行出错,以及错误提示。

--  作者:twlg
--  发布时间:2015/1/24 14:47:00
--  

BIN版,按你的方法,调试了下,对例子中的权限窗口,仍然提示未《未将对象引用设置到对象的实例。》,

错误行从这里开始

Dim trv1 As WinForm.TreeView = e.Form.Controls("用户列表")
For Each u As UserInfo In Users
    If u.Type = UserTypeEnum.User Then \'排除管理员和开发者
        If trv1.Nodes.Contains(u.Group) = False Then
            trv1.Nodes.Add(u.Group)
        End If
        trv1.Nodes(u.Group).Nodes.Add(u.Name)
    End If
Next
\'功能区(图片点击可在新窗口打开查看前面执行没问题,错误从这里开始),是我定义不正确吗
Dim tv As WinForm.TreeView = e.Form.Controls("菜单权限")
tv.Nodes.Clear
tv.Nodes.Add("功能区")


--  作者:twlg
--  发布时间:2015/1/24 14:48:00
--  
从表情那里开始的黑体字,是提示错误开始的代码段
--  作者:Bin
--  发布时间:2015/1/24 14:50:00
--  
这几句代码不会有问题, 你多加入一些messagebox.show 准确定位出问题代码看看.
--  作者:twlg
--  发布时间:2015/1/24 15:05:00
--  
BIN版,求助了,确实不知道那里有问题了。例子里面的  菜单权限 那个窗口,你点击应用,会出现问题吗
--  作者:Bin
--  发布时间:2015/1/24 15:12:00
--  
Dim trv1 As WinForm.TreeView = e.Form.Controls("用户列表")
For Each u As UserInfo In Users
    If u.Type = UserTypeEnum.User Then \'排除管理员和开发者
        If u.Group <> "" Then
        If trv1.Nodes.Contains(u.Group) = False Then
            trv1.Nodes.Add(u.Group)
        End If
        trv1.Nodes(u.Group).Nodes.Add(u.Name)
        End If
     End If
Next

--  作者:Bin
--  发布时间:2015/1/24 15:12:00
--  
遍历菜单看这里http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=54050&skin=0