TOleContainer调用Word的Bug?500分 (300分)

  • 主题发起人 主题发起人 久久
  • 开始时间 开始时间

久久

Unregistered / Unconfirmed
GUEST, unregistred user!
TOleContainer 不能用,有个致命的Bug,求一解决办法。
(可用C:/Program Files/Borland/Delphi7/Demos/ActiveX/OleCtnrs
下面的Demo看一下效果)

用OleContainer打开一个Word 文档,OK,一切正常。
这时候,客户往往想打开一个已经存在的Word文档进行Copy
问题就出现了。
我们再用Word打开一个已经有的Word文档,然后回来到我们的程序,
看看出现了什么效果吧。

不能进行编辑了............555555555...........

而我们的客户,多数时候都需要新开个Word 打开一些
其它文档,进行复制些文本内容过来。。。。
致命啊,因此要寻求个解决办法。。。

另外200分在:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=2287018
 
不能帮你什么,只有帮您提前了
 
楼主试试用 webBrowser来编辑word吧
 
:),要用程序激活Ole中的文档!
 
ZZHI,俺也想过啊,那如何激活呢?
 
只能到VBA 中找方法了,下面的代码可以先解决一下!
var
vWordObject: Variant;
i:integer;
begin
if olecontainer1.State in [osUIActive] then //隐藏WORD菜单和工具栏
begin
vWordObject := olecontainer1.OleObject;
vWordObject.Application.CommandBars['Standard'].Enabled := False;
vWordObject.Application.CommandBars['Standard'].Enabled := True;
end;
olecontainer1.DoVerb(ovShow); //激活WORD
 
帮顶,我一直关心这呢
 
能有更好的办法吗?每次都回闪动一下。
 
而且发现要自动来激活时间不是很好掌握,
我窗体激活消息里面,总是报错。。。
 
这个可以通过监视word的事件来控件或记录用户的操作,在delphi中有例子
C:/Program Files/Borland/Delphi7/Demos/ActiveX/OleAuto/Word8
 
我怎么没有碰到这个问题?
我也是用Ole打开Word,一样可以Copy and paste,是不是Word的问题?
 
xuxiaohan 你的Word 是什么版本?OLE 呢?
 
使用office2000,要保证系统一切正常没有软件冲突,有时机子会出莫名其妙的问题,这可能 就是软件问题,建议你换台机器或重装系统试试看。
 
我的是Word Xp,但发现另外一个问题,就是Ole Word内的工具栏 失能了,菜单还可以操作;我看这个Ole 真的不能用!,烦死我啦;
帮我看看我的帖字,希望你能帮我;
http://www.delphibbs.com/delphibbs/dispq.asp?lid=2343324
 
我曾经试过用VBA激活WORD文档,并且一切都控制得得心应手,如果要将WORD内嵌入程序界面的话,设置Windows.SetParent( WordHandle,YourFormHandle );就可以了,一切的编辑和操作就和在WORD中一样,如果您不需要菜单,可以设置WordApp.Visible = 0;然后再通过GetWindow和GetSubWindow取出Word的客户区,再设置Windows.SetParent( WordHandle,YourFormHandle );就可以了。一切OK。
 
to redleaf_wgm:
WordHandle如何获取?能否给俺写个Demo ??
如果解决此问题,500分给你400。
 
我有同样的问题,
已经解决了,不会闪动,不会报错!
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=2377126
在wm_active里面判断,必须用Postmessage才不会报错!
if Active then postmessage(handle,cm_enter,0,0)
...

procedure Tform1.cmEnter(var msg: Tmessage);
begin
application.processmessage;
try
lockWindowsupdate(handle)
oc.doverb(vbShow)
finally
lockWindowUpdate(0)
end;
end;
 
zzhi 100分 xuxiaohuan 各150分。其余50分大家分了吧。快过春节了。[:D]

问题虽然没有得到最终解决方案,但是现在还能凑合交差了。

希望能找到一个根除得办法,此办法指标不治本/
 
多人接受答案了。
 
后退
顶部