关于加载Richtext域以及Saveoptions
我在一个表单中添加了一个按钮,该按钮的操作是会将另一个文档的一个richtext域内容加载到该文档中的一个rtf域。一开始参考了Notes help中的实例,调用了saveoptions=0,关闭文档时不会弹出询问是否保存的框。动态加载是没有问题了,可是再打开文档,做任何修改,退出时都不会再问是否保存,只有连按两次Ctrl+s时能够保存成功。
但是如果把saveoptions删除,保存文档时会跳出询问是否保存,如果选择保存会有两份文档出现在数据库中,一个域值正常加载了,一个域值没有加载。
如果选择不保存,才能正确实施,但是这样会给用户造成困扰。
请问:
1.如果设置了saveoptions值为0,如何能将其恢复正常?(设置为1没用,为1是默认保存,也不会跳出对框询问)
2.如果不用saveoptions,有没有更好的解决办法? --------------------编程问答-------------------- 1,如果你想点击那个按钮,把rtf内容拷贝出来之后,就想在当前文档看到的话。必须关闭当前文档在打开。
2,如果你不想,马上看到效果的话,我不建议用saveoptions
你可以做一个flag,比入,flag默认=0,点击按钮之后flag=1
之后,在querysave里面进行判断,if flag=1,那么执行拷贝功能。。。。。 --------------------编程问答-------------------- 目前已经暂时解决上述问题。还未发现新的bug
是在IBM的网站上找到解决方法的。
大致的做法是,置saveoption为0,lotusscript中写代码关闭当前的ui文档,通过doc再打开新的ui文档,保存,删除原来的ui文档,在新的ui文档中通过removeitem删除saveoption域值。
代码修改后有以下效果
1.动态加载rtf域,对用户来说闪一下要的内容就贴出来了
2.按退出或者ctrl+s时能正常保存
--------------------编程问答-------------------- 一般情况下,最好在QueryOpen事件中对RTF域编程(要保存过文档之后),这样文档打开之后就能够看到编程的效果。
关闭再打开的方法我从来不用的,因为觉得很不爽,很不正规。 --------------------编程问答-------------------- 在表单上“SaveOptions”的值为“1”
Call uidoc.Save
set doc1 = uidoc.document
Set doc2 = ...
Set rtfitem1 = New NotesRichTextItem(doc1,"body")
Set rtfitem2 = doc2.GetFirstItem("body")
Call rtfitem1.AppendRTItem(rtfitem2)
Call doc1.Save(True,False)
Call uidoc.FieldSetText("SaveOptions","0")
Call uidoc.Close
Call ws.EditDocument(True,doc1)
没有感觉到关闭后再打开的闪烁效果,可能是我表单上的内容比较少。
如果不需要特定的来点击这个按钮,aluzi(aluzi) 的方法也可行,但存在消耗问题,每次打开文当前都要执行一次。 --------------------编程问答-------------------- 上面的代码运行后saveoptions的值就是0了,以后再修改文档能够正常保存吗? --------------------编程问答-------------------- 请注意,Call uidoc.FieldSetText("SaveOptions","0")这是在保存之后做的,目的只是让它不弹出保存提示窗口。而实际文档中的saveoptions永远为“1”。
--------------------编程问答-------------------- 可是saveoptions一直为1的话也就是默认就保存,那如果用户修改后关闭的时候不想保存怎么办?
补充:企业软件 , Lotus