Foxtable(狐表)用户栏目专家坐堂 → 关于CheckedListBox控件


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

主题:关于CheckedListBox控件

帅哥哟,离线,有人找我吗?
裴保民
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:2006 积分:12772 威望:0 精华:0 注册:2017/4/3 15:01:00
关于CheckedListBox控件  发帖心情 Post By:2017/12/6 20:00:00 [显示全部帖子]

窗体上有一个CheckedListBox控件,我想根据登录者的角色不同加载窗体后加载不同的列。
我在窗体的AfterLoad事件中写了如下代码:运行后是加载所有的列,怎样隐藏指定列呢?

Dim lieming As WinForm.CheckedListBox = e.Form.Controls("lieCheckedListBox")
For Each c As Col In Tables("机具库存资料").cols
            s=s &"|"& c.Name
        Next
        lieming.ComboList=s
e.form.Controls("Table1").Table.DataSource =DataTables("机具库存资料")
e.form.controls("Table1").Table.Filter = Tables("机具库存资料").Filter

[此贴子已经被作者于2017/12/6 20:00:21编辑过]

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


加好友 发短信
等级:八尾狐 帖子:2006 积分:12772 威望:0 精华:0 注册:2017/4/3 15:01:00
  发帖心情 Post By:2017/12/6 21:08:00 [显示全部帖子]

老师我是想实现当登录的角色是“系统管理员”的身份时要加载“电话号码”、“第二电话号码”列和其他列,如果是输入操作员的身份登录的系统时要加载“电话号码掩码”、“第二电话号码掩码”列和其他列,怎么处理呢?
[此贴子已经被作者于2017/12/6 21:11:17编辑过]

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


加好友 发短信
等级:八尾狐 帖子:2006 积分:12772 威望:0 精华:0 注册:2017/4/3 15:01:00
  发帖心情 Post By:2017/12/12 8:51:00 [显示全部帖子]

甜老师,这个窗体中还有一个副本表,怎么同时将副本表随着登录账户角色变化而变化呢?副本表的中的列变化规则同CheckedListBox控件中列的规则。

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


加好友 发短信
等级:八尾狐 帖子:2006 积分:12772 威望:0 精华:0 注册:2017/4/3 15:01:00
  发帖心情 Post By:2017/12/12 9:18:00 [显示全部帖子]

Dim lieming As WinForm.CheckedListBox = e.Form.Controls("lieCheckedListBox")
For Each c As Col In Tables("机具库存资料").cols
    If c.name = "电话号码" orelse c.name = "第二电话号码" Then
        If _userroles = "系统管理员" Then
            s=s &"|"& c.Name
        End If
    ElseIf c.name = "电话号码掩码" orelse c.name = "第二电话号码掩码" Then
        If _userroles = "操作员" Then
            s=s &"|"& c.Name
        End If

    Else
        s=s &"|"& c.Name
    End If
Next

lieming.ComboList=s
e.form.Controls("Table1").Table.DataSource =DataTables("机具库存资料")
e.form.controls("Table1").Table.Filter = Tables("机具库存资料").Filter

甜老师和这段代码差不多。都是在AfterLoad事件中写代码,能公用这段代码吗?

还是在他下面加入以下代码呢?

For Each c As Col In Tables("机具库存资料").cols
    If c.name = "电话号码" OrElse c.name = "第二电话号码" Then
        If _userroles = "系统管理员" Then
            c.visible = True
        Else
            c.visible = False
        End If
    ElseIf c.name = "电话号码掩码" OrElse c.name = "第二电话号码掩码" Then
        If _userroles = "操作员" Then
            c.visible = True
        Else
            c.visible = False
        End If
    Else
        c.visible = True
    End If
Next


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


加好友 发短信
等级:八尾狐 帖子:2006 积分:12772 威望:0 精华:0 注册:2017/4/3 15:01:00
  发帖心情 Post By:2017/12/12 9:55:00 [显示全部帖子]

甜老师一下写的代码对吗?
Dim lieming As WinForm.CheckedListBox = e.Form.Controls("lieCheckedListBox")
For Each c As Col In Tables("机具库存资料").cols
    If c.name = "电话号码" orelse c.name = "第二电话号码" Then
        If _userroles = "系统管理员" Then
            s=s &"|"& c.Name
        End If
    ElseIf c.name = "电话号码掩码" orelse c.name = "第二电话号码掩码" Then
        If _userroles = "操作员" Then
            s=s &"|"& c.Name
        End If
    Else
        s=s &"|"& c.Name
    End If
Next
For Each c As Col In Tables("机具库存资料").cols
    If c.name = "电话号码" OrElse c.name = "第二电话号码" Then
        If _userroles = "系统管理员" Then
            c.visible = True
        Else
            c.visible = False
        End If
    ElseIf c.name = "电话号码掩码" OrElse c.name = "第二电话号码掩码" Then
        If _userroles = "操作员" Then
            c.visible = True
        Else
            c.visible = False
        End If
    Else
        c.visible = True
    End If
Next
lieming.ComboList=s
e.form.Controls("Table1").Table.DataSource =DataTables("机具库存资料")
e.form.controls("Table1").Table.Filter = Tables("机具库存资料").Filter


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


加好友 发短信
等级:八尾狐 帖子:2006 积分:12772 威望:0 精华:0 注册:2017/4/3 15:01:00
  发帖心情 Post By:2017/12/12 10:02:00 [显示全部帖子]

还没调试呢

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


加好友 发短信
等级:八尾狐 帖子:2006 积分:12772 威望:0 精华:0 注册:2017/4/3 15:01:00
  发帖心情 Post By:2017/12/12 12:53:00 [显示全部帖子]

Dim lieming As WinForm.CheckedListBox = e.Form.Controls("lieCheckedListBox")
For Each c As Col In Tables("机具库存资料").cols
    If c.name = "电话号码" orelse c.name = "第二电话号码" Then
        If _userroles = "系统管理员" Then
            s=s &"|"& c.Name
        End If
    ElseIf c.name = "电话号码掩码" orelse c.name = "第二电话号码掩码" Then
        If _userroles = "操作员" Then
            s=s &"|"& c.Name
        End If
    Else
        s=s &"|"& c.Name
    End If
Next
For Each c As Col In Tables("机具库存资料").cols
    If c.name = "电话号码" OrElse c.name = "第二电话号码" Then
        If _userroles = "系统管理员" Then
            c.visible = True
        Else
            c.visible = False
        End If
    ElseIf c.name = "电话号码掩码" OrElse c.name = "第二电话号码掩码" Then
        If _userroles = "操作员" Then
            c.visible = True
        Else
            c.visible = False
        End If
    Else
        c.visible = True
    End If
Next
lieming.ComboList=s
e.form.Controls("Table1").Table.DataSource =DataTables("机具库存资料")
e.form.controls("Table1").Table.Filter = Tables("机具库存资料").Filter  

甜老师您看看运行这段代码后,和以前没变化,您看看哪错了
是不是下面这句代码的原因
e.form.Controls("Table1").Table.DataSource =DataTables("机具库存资料")
e.form.controls("Table1").Table.Filter = Tables("机具库存资料").Filter  




[此贴子已经被作者于2017/12/12 13:04:43编辑过]

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


加好友 发短信
等级:八尾狐 帖子:2006 积分:12772 威望:0 精华:0 注册:2017/4/3 15:01:00
  发帖心情 Post By:2017/12/12 15:30:00 [显示全部帖子]

这样写代码窗体表没有数据

不起作用
[此贴子已经被作者于2017/12/12 15:49:58编辑过]

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


加好友 发短信
等级:八尾狐 帖子:2006 积分:12772 威望:0 精华:0 注册:2017/4/3 15:01:00
  发帖心情 Post By:2017/12/12 16:00:00 [显示全部帖子]

已加载就是所有列

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


加好友 发短信
等级:八尾狐 帖子:2006 积分:12772 威望:0 精华:0 注册:2017/4/3 15:01:00
  发帖心情 Post By:2017/12/12 22:08:00 [显示全部帖子]

谢谢甜老师!已经解决
还有一个问题就是,怎么窗体表中的列顺序乱排呢?和原始表中的顺序不一样,我该在哪里设置一下呢?怎么设?
关键是现在具体所要显示哪些列不是固定不变的而是动态的,不知道怎么设
[此贴子已经被作者于2017/12/12 22:16:24编辑过]

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