如果我们能够 通过lotusscript编辑控制word的属性改变就解决了“痕迹保留”这个需求。
编辑实现
下面编辑实现上述需求。先建立一表单,在表单中加入如下域名:
名称 类型 默认值 隐藏条件
Boby RTF 无
WordEditing 文本,可编辑 “0”
$OLEObjProgID 文本,可编辑 "Word.document"
$OLEObjField 文本,可编辑 "Body"
为表单创建四个操作:
名称 隐藏条件
编辑WORD文档 WordEditing="1"
显示修改痕迹 WordEditing="1"
返回表单 WordEditing="0"
关闭 WordEditing="1"
下面利用Lotusscript编程实现将 Word嵌入到表单的Body域中,WordEditing域用来控制表单中的四个操作按钮在进入Word中只显示“返回菜单”,不在Word中时显示另外三个操作按钮,其他两个域用来控制嵌入的是word,而不是其他应用程序。
在表单中定义下述变:
Dim rtitem as notesrichtextitem
dim olebject as variant
dim embed as notesembeddedobject
在对“编辑word文档”操作的click事件中加入lotusscript脚本:
sub click(source as button)
dim s as new notessession
dim w as new notesuiworkspace
dim uidoc as notesuidocument
dim doc as notesdocument
dim user as string
set uidoc = w.currentdocument
set doc = uidoc.document
dim sOleField as string
doc.wordediting="1"
call uidoc.refreshhideformulas
if doc.hasitem("$OLEObjProgID") then
sOleField =doc.~$OLEObjField(0)
if uidoc.isnewdoc then
uidoc.refreshhideformulas
uidoc.gotofield(sOleField)
call uidoc.createObject("OLEObject",doc.~$OLEObjProgID(0),"")
else
if (doc.hasembedded) then
set rtitem=doc.getfirstitem(sOleField)
set rtitem=doc.getfirstitem("body")
set embed=rtitem.EmbeddedOjects(0)
user=s.commonUserName
set oleobject=uidoc.GetObject(embed.name)
'记录修改痕迹
oleobject.TrackRevisions=true
'不打印修改痕迹
oleobject.printrevisions= false
'不显示痕迹
oleobject.showrevisions=true
'记录在word中的当前用户
oleobject.parent.username=user
oleobject.parent.userinitials=user
end if
end if
end if
end sub
在对“显示修改痕迹”操作的click事件中加入lotusscript脚本。脚本和“编辑word文档“操作的click事件基本相同,只是将其对应部分改成以下程序语句:
'记录修改痕迹
oleobject.TrackRevisions=true
'打印修改痕迹
oleobject,printrevisions= true
'显示痕迹
oleobject.showrevisions=true
'记录在word中的当前用户
oleobject.parent.username=user
oleobject.parent.userinitals=user