以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  记录窗口上如何实现与表同步显示锁标记  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=133244)

--  作者:happyft
--  发布时间:2019/4/10 15:16:00
--  记录窗口上如何实现与表同步显示锁标记

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

sql窗口表当某列不可编辑时会显示一个小锁,但如果打开绑定的记录窗口时,不可编辑的列处不会显示小锁,很不直观,如何才以实现锁标记同步显示呢?

谢谢!

--  作者:有点甜
--  发布时间:2019/4/10 15:53:00
--  
没办法。建议做一个简单的方法。在drawcell事件,如果列无法编辑,就显示为红色样式,即可。
--  作者:HappyFt
--  发布时间:2019/4/10 17:34:00
--  
这个记录窗口是通用的,只有在项目事件CurrentTableChanged有下面的代码而已
If  Forms("记录窗口").Opened Then
    Dim rgd As WinForm.RecordGrid = Forms("记录窗口").Controls("RecordGrid1")
    rgd.Table = CurrentTable  \'指定绑定表
    rgd.Build()
End If

要在全局表事件drawcell中写代码来控制实际绑定表的列样式?

--  作者:有点甜
--  发布时间:2019/4/10 17:56:00
--  

如果是通用的,写代码处理一下,如

 

If  Forms("记录窗口").Opened Then
    Dim rgd As WinForm.RecordGrid = Forms("记录窗口").Controls("RecordGrid1")
    rgd.Table = CurrentTable  \'指定绑定表
    rgd.Build()
    Dim t = rgd.basecontrol
    For i As Integer = 0 To t.Rows.count-1
        If CurrentTable.Cols(t.Rows(i)(0)).AllowEdit Then
            t.SetCellStyle(i, 0, "")
        Else
            Dim cs1 As C1.Win.C1FlexGrid.CellStyle = t.Styles.Add("样式1")
            cs1.forecolor = Color.red
            cs1.backcolor = Color.yellow
            \'cs1.font = new font("宋体", 15)
            t.SetCellStyle(i, 0, cs1)           
        End If
    Next
End If


--  作者:HappyFt
--  发布时间:2019/4/10 18:24:00
--  
可以了,请教一下上面的这句 Dim t as table = rgd.basecontrol 为什么不用 as table? 是不是直接引用底层时后面都不用加变量名,

谢谢


--  作者:有点甜
--  发布时间:2019/4/10 21:43:00
--  

Dim t 等同于 Dim t As Object

 

当你不想写或者不知道类型的时候,可以不写,这样很省事。