以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  如何设置锁定列标题的颜色?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=38676)

--  作者:客家阿哥
--  发布时间:2013/8/4 8:41:00
--  如何设置锁定列标题的颜色?
我想把所有表锁定列的“锁头”标志去掉,并且该锁定列标题的字体颜色为红色。

锁头标志太占位置了,用标题字体颜色来标识!

--  作者:lsy
--  发布时间:2013/8/4 9:07:00
--  

PrepareEdit

 

If User.Name <> "管理员" Then
    If e.Col.Name = "第一列" Then
        e.Cancel = True
        e.Table.SetHeaderCellForeColor(e.Col.Name ,Color.Red)
    End If
End If


--  作者:客家阿哥
--  发布时间:2013/8/4 12:31:00
--  
谢谢 lsy老师。

我要的是这种效果
For Each tbl As Table In Tables
    For Each Cl As Col In Tbl.Cols
        If  Cl.AllowEdit = False then
            tbl.SetHeaderCellForeColor(Cl.Name ,Color.Red)
        End If
    Next
Next
[此贴子已经被作者于2013-8-4 12:31:01编辑过]

--  作者:lsy
--  发布时间:2013/8/4 15:04:00
--  

你要去掉锁,就不能用你上面的代码。

我的代码可以去锁,也可以变色,不允许编辑的,就不能编辑。

具体怎么运用,要看你的权限如何设置。


--  作者:lsy
--  发布时间:2013/8/4 15:43:00
--  

好事做到底,给你个实例。

 

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:列标题颜色替换锁头.table

[此贴子已经被作者于2013-8-4 15:42:59编辑过]

--  作者:客家阿哥
--  发布时间:2013/8/4 15:57:00
--  
For Each t As Table In Tables
    For Each c As Col In t.Cols
        If c.AllowEdit = False Then
            t.SetHeaderCellForeColor(c.Name ,Color.Red)
            tablecol + = t.Name & "," & c.Name
            c.AllowEdit = True
        End If
    Next
Next
===========================

这两句是什么意思啊?

            tablecol + = t.Name & "," & c.Name
            c.AllowEdit = True
[此贴子已经被作者于2013-8-4 15:57:35编辑过]

--  作者:lsy
--  发布时间:2013/8/4 16:02:00
--  
先说说效果,可达到你的要求?
--  作者:客家阿哥
--  发布时间:2013/8/4 16:05:00
--  
是啊,锁头不见了!
--  作者:lsy
--  发布时间:2013/8/4 16:17:00
--  

思路给你理一理:

1、全局代码

Public Tablecol As String    \'全局变量记录表名列名

2、Initialize

For Each dt As DataTable In DataTables
    dt.GlobalHandler.PrepareEdit = True   \'使PrepareEdit全局事件有效
Next

3、AfterOpenProject

For Each t As Table In Tables
    For Each c As Col In t.Cols
        If c.AllowEdit = False Then
            t.SetHeaderCellForeColor(c.Name ,Color.Red)   \'禁止编辑就变色
            tablecol + = t.Name & "," & c.Name   \'表名列名加到全局变量中
            c.AllowEdit = True  \'相应的列恢复编辑,目的是去掉锁头
        End If
    Next
Next

4、PrepareEdit

If tablecol.Contains(e.Table.Name & "," & e.Col.Name) = True Then   \'如果全局变量中包含此表此列的名称,说明此表的此列禁止编辑
    e.Cancel = True   \'取消编辑,达到c.AllowEdit = False一样的效果
End If

[此贴子已经被作者于2013-8-4 16:31:14编辑过]

--  作者:客家阿哥
--  发布时间:2013/8/4 16:22:00
--  
谢谢 lsy老师,刚才我换以为要手工每张表去锁头呢