以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  修改后标记  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=183434)

--  作者:15666282205
--  发布时间:2022/11/5 8:45:00
--  修改后标记
老师,计划表的多列内容由A录入,B审核后可以修改,修改后的内容需要标记出来,单元格或者字体变成红色。我大体设计了以下代码,请您帮忙完善一下好吗。
首先设计一个样式“红色”,然后在DrawCell事件中设置如下代码:

If User.name <> "录入" Then \'如果登录人不是录入员    
  \'If e.Row("数量") > 5000 Then \'这行是帮助里的代码,规定了某个单元格,我的需求是所有修改的单元格,并不固定,这里我不会写代码。
  e.Style = "红色"
  end if
end if

--  作者:洮沙
--  发布时间:2022/11/5 9:15:00
--  
http://www.foxtable.com/help/topics/2369.htm

OriginalValue

获得指定列在打开项目后的初始值,或最近一次保存后的值。

一般用户可以忽略此节内容。
如果还没有接触事件编程,也请暂时忽略此节内容。

示例一

我们知道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


--  作者:有点蓝
--  发布时间:2022/11/5 9:32:00
--  
如果是更改后没有保存的数据,使用2楼的方法判断即可。

如果是已经保存的内容,是没有办法判断的

--  作者:15666282205
--  发布时间:2022/11/7 8:04:00
--  
老师,2楼的代码不行呢。蓝老师说的已经保存的数据不可以,我们项目的数据是已经保存的,然后其他人来修改。有办法实现吗?


--  作者:有点蓝
--  发布时间:2022/11/7 8:50:00
--  
做一个日志功能,记录所有的改动,比如:http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=110215
--  作者:15666282205
--  发布时间:2022/11/7 8:59:00
--  
老师,目的是让操作表的人能明显看到修改的内容,日志的话可能达不到这个效果


--  作者:有点蓝
--  发布时间:2022/11/7 9:05:00
--  
肯定可以。drawcell事件里查询日志,是否有改动,然后相应设置样式即可
--  作者:15666282205
--  发布时间:2022/11/7 9:08:00
--  
哦,您把帮助的链接给我好吗?


--  作者:有点蓝
--  发布时间:2022/11/7 9:57:00
--  
日志的用法看5楼。