以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  标记的问题?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=83872)

--  作者:zsslly
--  发布时间:2016/4/18 23:46:00
--  标记的问题?

我们知道Foxtable有修改标记功能,能用红底白字标出那些 已经被修改过的单元格。
其实我们可以不用Foxtable内置的修改编辑功能,自己编码实现,过程很简单:

1、新增一个自定义样式,红底白字,假定样式名为"a"

2、将DrawCell事件代码设置为:

If e.Row(e.Col.Name) <> e.Row.DataRow.OriginalValue(e.Col.Name) Then
    
e.Style = "a"
End
 If


在知识点上看到标记,也这样设了

现在的情况是,我的表中有一个“备注”列,而这个备注列我们通过一个新建窗口,且通过代码将内容添加进去的,如上这个标记的代码就不可以用了,应该怎么判断单元格中内容改变并标记呢?



--  作者:zsslly
--  发布时间:2016/4/18 23:47:00
--  
常规的单元格,手动修改的情况下,这个标记的代码是可以实现标记的
--  作者:Hyphen
--  发布时间:2016/4/19 8:24:00
--  
测试没有问题,上例子
--  作者:大红袍
--  发布时间:2016/4/19 9:28:00
--  
以下是引用zsslly在2016/4/18 23:47:00的发言:
常规的单元格,手动修改的情况下,这个标记的代码是可以实现标记的

 

那你可以在DataColChanged事件或者你控件的TextChanged、ValueChanged刷新一下表

 

Tables("表A").Refresh


--  作者:zsslly
--  发布时间:2016/4/19 17:34:00
--  
老师请看,备注列用窗口输入就不可以
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试标记.table


--  作者:大红袍
--  发布时间:2016/4/19 17:39:00
--  

 你都把表保存了,自然就不显示,去掉代码

 

If DataTables ("表A").HasChanges Then
    DataTables ("表A").Save
End If


--  作者:zsslly
--  发布时间:2016/4/19 18:03:00
--  
谢谢老师
--  作者:zsslly
--  发布时间:2016/4/19 20:04:00
--  
老师,我发现这个代码和汇总样式的代码冲突了:

修改标记开始
If e.Row(e.Col.Name) <> e.Row.DataRow.OriginalValue(e.Col.Name) Then
    e.Style = "a"
End If






If e.Row.IsGroup = False Then
    
    If e.Row.Isnull ("操作性") = False Then
        If e.Row("操作性") = ("签单") Then
            e.style = "签单"
        Else If e.Row("操作性") = ("跑单") Then
            e.style = "跑单"
        End If
    End If
    
    
    If e. Col.name = "操作日期" Then
        If e.Row.Isnull("操作日期") = False Then
            If e.Row("操作日期") < = Date.Today Then
                e.style = "逾期"
            Else
                If e.Row("操作日期") < Date.Today.addDays(3) Then
                    e.style = "近期"
                End If
            End If
        End If
    End If
    
    
    If e.Row.Isnull ("市场部") = False Then
        If e.Row("市场部") = ("未分派") Then
            e.style = "未分派"
        End If
    End If
    
    
    If e.Row.Isnull ("操作性") = False Then
        If e.Row("操作性") = ("预签") Then
            e.style = "预签"
        End If
    End If
    
    
    If e.Row.Isnull ("操作性") = False Then
        If e.Row("操作性") = ("预收设计") Then
            e.style = "预收设计"
        End If
    End If
    
    
    If e.Row.Isnull ("跟单状态") = False Then
        If e.Row("跟单状态") = ("转跟") Then
            e.style = "转跟"
        End If
    End If

Else

If e.Row.Level = 0 Then
        e.Style = "样式1"
    Else If e.Row.Level = 1 Then
        e.Style = "样式2"
    End If
    

End If





求老师帮看看那里出错了?

--  作者:zsslly
--  发布时间:2016/4/19 20:05:00
--  
主要是样式这里,取消标记代码都可以,用这个代码后在汇总时,系统提示未引用到对象
--  作者:大红袍
--  发布时间:2016/4/19 20:08:00
--  
If e.Row.DataRow IsNot Nothing AndAlso e.Row.DataRow.OriginalValue(e.Col.Name).Gettype.Name <> "DBNull" AndAlso e.Row(e.Col.Name) <> e.Row.DataRow.OriginalValue(e.Col.Name) Then
    e.Style = "a"
End If
[此贴子已经被作者于2016/4/19 20:07:59编辑过]