以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]权限设置  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=171118)

--  作者:lgj716330
--  发布时间:2021/8/18 16:48:00
--  [求助]权限设置
用户管理采用的是自定义的,在设置权限窗口时下面的AfterLoad代码出错

msgbox(1)
Dim trv1 As WinForm.TreeView = e.Form.Controls("用户列表")
For Each us As UserInfo In Users
    If us.Type = UserTypeEnum.User Then
        If trv1.Nodes.Contains(_UserGroup) = False Then
            trv1.Nodes.Add(_UserGroup)
        End If
        trv1.Nodes(_UserGroup).Nodes.Add(_UserName)
     End If
Next
msgbox(2)

图片点击可在新窗口打开查看此主题相关图片如下:微信图片_20210818164736.png
图片点击可在新窗口打开查看

[此贴子已经被作者于2021/8/18 16:49:21编辑过]

--  作者:有点蓝
--  发布时间:2021/8/18 16:55:00
--  
msgbox(_UserGroup)
msgbox(_UserName)

--  作者:lgj716330
--  发布时间:2021/8/18 18:19:00
--  
显示是空值

自定义用户管理 ,下面这样是不是不行
For Each us As UserInfo In Users
    If us.Type = UserTypeEnum.User Then
[此贴子已经被作者于2021/8/18 18:21:23编辑过]

--  作者:有点蓝
--  发布时间:2021/8/19 8:38:00
--  
显示是空值,说明登录后没有给这些_UserGroup变量赋值
--  作者:lgj716330
--  发布时间:2021/8/21 9:02:00
--  
通过以下代码设置列不可见后,打开表时确实不可见,但仍可以通过取消隐藏列重新显示,有什么办法可以控制没办法通过取消隐藏列来重新显示呢
If User.Type = UserTypeEnum.User Then
    For Each dr As DataRow In DataTables("授权表").Select("用户名 = \'" & User.Name & "\'" )
        If
 dr.IsNull("列名"
Then
        
    Tables(dr("表名")).Visible = Not dr("不可见")
            Tables
(dr("表名")).AllowEdit = Not dr("不可编辑")

        Else
            
Tables(dr("表名")).Cols(dr("列名")).Visible = Not dr("不可见")
            Tables
(dr("表名")).Cols(dr("列名")).AllowEdit = Not dr("不可编辑")
        End
 
If
    Next
End
 
If

--  作者:有点蓝
--  发布时间:2021/8/21 9:05:00
--  
隐藏或者删除菜单里的“取消隐藏列”功能
--  作者:lgj716330
--  发布时间:2021/8/21 9:36:00
--  
如何隐藏右键快捷菜单中的某个功能
--  作者:有点蓝
--  发布时间:2021/8/21 9:47:00
--  
参考:http://www.foxtable.com/webhelp/topics/0662.htm


--  作者:wei0769
--  发布时间:2021/8/21 10:55:00
--  
用  Remove  用了之后,你再看下

Remove方法从Table中移除指定的列,注意是移除,不是删除,被移除的列继续存在于DataTable中,该列还可以正常参与各种计算,只是用户再也看不到这一列。
移除列类似于隐藏列,不过被隐藏的列,用户可以通过菜单命令撤销隐藏,而被移除的列,除非重新打开项目文件,否则用户再也无法看到该列。

语法:

Remove(ColName1, ColName2, ColName3...)

ColName1: 字符型,指定要移除列的列名称,可以指定任意多列。

例如在订单表中移除折扣列:

If Tables("订单").Cols.Contains("折扣") Then
    Tables("订单").Cols.Remove("折扣")
End If

也可以一次移除多列,例如:

Tables("订单").Cols.Remove("折扣","金额")

[此贴子已经被作者于2021/8/21 10:55:20编辑过]

--  作者:有点蓝
--  发布时间:2021/8/21 11:20:00
--  
使用移除功能对于切换登录用户不是很友好,因为需要重新加载表格才能看到被移除的列