以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  记录窗口锁定列的背景色设置  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=77656)

--  作者:wyanji
--  发布时间:2015/11/23 11:39:00
--  记录窗口锁定列的背景色设置

我自建了一个记录窗口,希望已锁定的列对应的数据区背景色为灰色,请问该如何处理?


--  作者:大红袍
--  发布时间:2015/11/23 11:46:00
--  
Dim rgd As WinForm.RecordGrid = e.Form.Controls("RecordGrid1")
Dim t As Table = rgd.Table
Dim g As object  = rgd.basecontrol
Dim cs1 As C1.Win.C1FlexGrid.CellStyle = g.Styles.Add("样式1")
cs1.backcolor = Color.Gray
For Each r As object In g.rows
    If t.cols(r(0)).AllowEdit = False Then
        g.SetCellStyle(r.index, 1, cs1)
    End If
Next

--  作者:wyanji
--  发布时间:2015/11/23 13:09:00
--  


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

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

 

我的主表中的每个列都有列名称和列标题,

把您的编码复制到项目中后,提示如上的错误。截图中的“销售合同编号”是我的主表中第一列的列标题。

 

请您再给看看,谢谢!


--  作者:wyanji
--  发布时间:2015/11/23 13:45:00
--  
我把代码是加到窗口的Afterload事件中的,是不是这里做错了?
--  作者:大红袍
--  发布时间:2015/11/23 14:18:00
--  

改一下

 

Dim rgd As WinForm.RecordGrid = e.Form.Controls("RecordGrid1")
Dim t As Table = rgd.Table
Dim g As object  = rgd.basecontrol
Dim cs1 As C1.Win.C1FlexGrid.CellStyle = g.Styles.Add("样式1")
cs1.backcolor = Color.Gray
For Each r As object In g.rows
    For Each c As Col In t.cols
        If c.name = r(0) Then
            If c.AllowEdit = False Then
                g.SetCellStyle(r.index, 1, cs1)
            End If
            Exit For
        End If
    Next
Next


--  作者:wyanji
--  发布时间:2015/11/23 15:00:00
--  

没有报错,但是也没有出希望的结果,您再帮忙看看,谢谢!

 


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

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

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


--  作者:大红袍
--  发布时间:2015/11/23 15:02:00
--  

If c.name = r(0) Then

改成

 

If c.Caption= r(0) Then


--  作者:wyanji
--  发布时间:2015/11/23 21:31:00
--  
可以了,非常感谢!
--  作者:wyanji
--  发布时间:2015/11/23 22:50:00
--  

用了代码后,原来设置的数字格式没有了。

原来的格式:


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

用代码后的格式:

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


--  作者:大红袍
--  发布时间:2015/11/23 23:12:00
--  
Dim rgd As WinForm.RecordGrid = e.Form.Controls("RecordGrid1")
Dim t As Table = rgd.Table
Dim g As object  = rgd.basecontrol
For Each r As object In g.rows
    For Each c As Col In t.cols
        If c.caption = r(0) Then
            If c.AllowEdit = False Then
                Dim cs1 As C1.Win.C1FlexGrid.CellStyle = g.GetCellRange(r.index, 1).style
                cs1.backcolor = Color.Gray
            End If
            Exit For
        End If
    Next
Next