以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  请教窗口控件权限设置  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=60659)

--  作者:seintfei
--  发布时间:2014/11/28 16:24:00
--  请教窗口控件权限设置
如图

图片点击可在新窗口打开查看此主题相关图片如下:9.gif
图片点击可在新窗口打开查看
请问这样的授权,代码如何写

--  作者:有点甜
--  发布时间:2014/11/28 16:28:00
--  

 在afterLoad事件,比如

 

Dim dt As DataTable = DataTables("授权表")
For Each dr As DataRow In dt.Select("窗口 = \'窗口1\'")
    Forms("窗口1").Controls(dr("控件名")).Enabled = not dr("不可编辑")
    Forms("窗口1").Controls(dr("控件名")).Visible = not dr("不可见")
Next


--  作者:seintfei
--  发布时间:2014/11/28 16:31:00
--  
能在项目事件LoadUserSetting的基础上修改吗?

For Each t As Table In Tables
    t.Visible = True
    t.AllowEdit = 
true
    For Each c As Col In t.Cols
        c.Visible = 
True
        c.AllowEdit = 
True
    Next

Next
Tables
("授权表").Visible = (User.Type <> UserTypeEnum.User )
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
 
I
--  作者:有点甜
--  发布时间:2014/11/28 16:33:00
--  

 不能,只有在窗口的afterload事件写代码才行。红色代码你可以替换成变量

 

Dim dt As DataTable = DataTables("授权表")
For Each dr As DataRow In dt.Select("窗口 = \'窗口1\'")
    Forms("窗口1").Controls(dr("控件名")).Enabled = not dr("不可编辑")
    Forms("窗口1").Controls(dr("控件名")).Visible = not dr("不可见")
Next


--  作者:seintfei
--  发布时间:2014/11/28 16:56:00
--  
谢谢老师指导
--  作者:seintfei
--  发布时间:2014/11/28 16:59:00
--  
貌似 用户名 不起作用?
--  作者:有点甜
--  发布时间:2014/11/28 17:00:00
--  
For Each dr As DataRow In dt.Select("窗口 = \'窗口1\' and 用户名 = \'" & user.Name & "\'")
--  作者:seintfei
--  发布时间:2014/11/28 17:04:00
--  
谢谢
--  作者:seintfei
--  发布时间:2014/11/28 17:27:00
--  
追加问题,想在 授权表 加入列内容隐藏设定,增加列 “掩码” 如何修改代码

图片点击可在新窗口打开查看此主题相关图片如下:11.gif
图片点击可在新窗口打开查看


If e.Col.Name = "列名" Then \'请改为实际列名
    If User.name <> "张经理" AndAlso UserName <> "王总监" Then \'如果不是指定用户
        e.Text = 
"****" \'则修改显示内容
    
End If
End
 
If
[此贴子已经被作者于2014-11-28 17:29:21编辑过]

--  作者:有点甜
--  发布时间:2014/11/28 17:32:00
--  

1、不要再drawcell事件写find函数;

 

2、在afteropenproject的时候,把对应表,对应列的掩码取出保存在一个集合变量里;

 

3、在drawcell里面取出变量值,设置