难道高手只会回答一些简单问题?分不够可以再加!如何判断OleContainer 内的 Word 文档 是否修改过? (150分)

  • 主题发起人 主题发起人 let_it_be
  • 开始时间 开始时间
L

let_it_be

Unregistered / Unconfirmed
GUEST, unregistred user!
如题,
用途:如果修改了,在关闭窗口时可以提示保存。
 
有谁能回答这个问题?
 
这个东东很少有人用,一般都用DELPHI提供的Servers页面下的控件来处理WORD文档
 
我试了一下,OleContainer有个modified属性可以返回其对象是否被更改,但不仅包括文档中的字被更改,还包括显示等的更改,不知是不是符合你的要求
 
OleContainer 的 modified 不行。
还有没有其他方法
 
异想天开一下吧:记录两次时间进行比较不知道可不可以?
 
记录两次时间进行比较不知道可不可以??
怎样做?
我的 Ole 的 word 是从Stream读进去的。
 
www.goldgrid.com
的iWebOffice就做到了这个,你可以去他们那里问问呀!他们也有联系方式的,在网上
MSN:goldgrid@hotmail.com
 
chenfreax:
是个广告吧?
 
可以用 Stream的 Size 来判断,自己试试。
 
应该通过olecontainer的OleObject属性获取ole对象,然后通过ole对应word的属性来判断。
如:ob,ap,wb,wk为olevariant类型
ob=OleContainer1->OleObject;
ap=ob.OlePropertyGet("Application");
wb=ap.OlePropertyGet("WorkBooks",1);//前面一定要#include <utilcls.h>
wk=wb.OlePropertyGet("WorkSheets",1);
 
[:D]不知道用MD5算不算一种方法?
判断一个文件前后两次的MD5值是否相同!
 
江南大米:
能不能详细说说怎样做?

wangxd:
你的是C++的,我不动C++,
我是说Delphi的
 
给你一个vba的属性:
Application.ActiveDocument.Saved,可以判断当前活动文档是否保存。
当然,你可以根据实际情况斟酌使用。
如何从OleContainer中得到VBA的Com,可以参考

http://www.delphibbs.com/delphibbs/dispq.asp?lid=737517

文章比较长,需要慢慢看,在后面有的,需要你自己慢慢总结。

OK。
 
试试看!
 
查查全文检索吧。
 
用VBA的一个属性值,OleObject.Application.ActiveDocument.Saved的返回值就是是否保存后的值,OleObject是olecontainer的一个属性
 
雪逸
你试试好不好?
我试过不行呢!
 
雪逸的可以啦,xuxiaohan的Stream的Size判断也可以,不方便。
 
vba的属性:
Application.ActiveDocument.Saved
 
后退
顶部