以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]通过TopicBar怎么获取到上层NavBar的NavPage  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=95518)

--  作者:zhangyj
--  发布时间:2017/1/22 14:47:00
--  [求助]通过TopicBar怎么获取到上层NavBar的NavPage
我用NavBar嵌套TopicBar做导航功能,要实现权限控制TopicLink的显示,如果TopicBar中没有可访问的topiclink,对应NavBar的NavPage也不显示,怎么可以通过topicbar获取到上层的NavPage对象,从而控制是否显示
--  作者:rjh4078
--  发布时间:2017/1/22 15:43:00
--  

做一个表 动态生成导航 像我这样

 

 


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20170122154119.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20170122154224.png
图片点击可在新窗口打开查看

 

这里面的TopicLink 和page都是根据权限动态生成的 每个人看到的不一样

[此贴子已经被作者于2017/1/22 15:44:42编辑过]

--  作者:有点色
--  发布时间:2017/1/22 18:15:00
--  

 这样写

 

Dim npg As WinForm.NavPage = e.Sender.parent
msgbox(npg.ButtonText)


--  作者:zhangyj
--  发布时间:2017/3/3 14:54:00
--  
以下是引用有点色在2017/1/22 18:15:00的发言:

 这样写

 

Dim npg As WinForm.NavPage = e.Sender.parent
msgbox(npg.ButtonText)


老师,我是想在窗口加载的时候,根据权限设置,来控制NavPage是否显示; 如果NavPage内的TopicBar是显示的则设置NavPage显示,否则不显示,我现在通过很笨的方法实现了,如果可以通过TopicBar找到包含它的NavPage就简单了。


Dim nb As WinForm.NavBar = e.Form.Controls("NavBar1")


Dim tb_base As WinForm.TopicBar = e.Form.controls("tb_base")



npVisible = False

For Each tp As WinForm.TopicPage In tb_base.Pages

    tpVisible=False

    For Each tl As WinForm.TopicLink In tp.Links        

        boolVisible = Functions.Execute("CheckRight",tl.name) --返回true或False

        If boolVisible = True AndAlso tpVisible=False Then

            tpVisible = True            

        End If

        tl.Visible = boolVisible

    Next

    If tpVisible=True AndAlso npVisible=False Then

        npVisible=True

    End If

    tp.Visible=tpVisible

Next

For Each np As WinForm.NavPage In nb.NavPages

    If np.Name="np_base" Then

        np.Visible=npVisible

    End If   

Next



--  作者:有点色
--  发布时间:2017/3/3 17:57:00
--  

直接写不就行了?

 

Dim tb_base As WinForm.TopicBar = e.Form.controls("tb_base")

Dim npg As WinForm.NavPage = tb_base.parent
npg.Visible = tb_base.Visible

[此贴子已经被作者于2017/3/3 17:56:54编辑过]

--  作者:zhangyj
--  发布时间:2017/3/4 10:20:00
--  
以下是引用有点色在2017/3/3 17:57:00的发言:

直接写不就行了?

 

Dim tb_base As WinForm.TopicBar = e.Form.controls("tb_base")

Dim npg As WinForm.NavPage = tb_base.parent
npg.Visible = tb_base.Visible

[此贴子已经被作者于2017/3/3 17:56:54编辑过]


tb_base.parent 是winform.SplitPanel
tb_base.parent.parent 是空
 请老师指点。。。



--  作者:有点蓝
--  发布时间:2017/3/4 11:57:00
--  

按照你4楼的方式处理吧