300分,请教一个在TOleContainer中嵌入Word文件的问题.(300分)

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

laqo

Unregistered / Unconfirmed
GUEST, unregistred user!
[blue]我想在一个Form中放一个TOleContainer,在TOleContainer中嵌入一个Word文件
a.doc,再在Form中放入一个Button,当单击Button时,能[/blue][red]在Form之外,启动
一个Word窗口[/red],[blue]a.doc显示在里面.我没想到这个问题[red]在Form之外,启
动一个Word窗口(即指不用现场激活(inplace)方式激活TOleContainer)[/red]竟如此之
难,还望高手指点,指点.[/blue][?]
 
那就用shell就可以了啊,何必一定要一条路走到黑:)
 
颜色怎么没加上啊?我还是从来一遍吧。
我想在一个Form中放一个TOleContainer,在TOleContainer中嵌入一个Word文件
a.doc,再在Form中放入一个Button,当单击Button时,能在Form之外,启动一个Word
窗口,a.doc显示在里面.我没想到这个问题在Form之外,启动一个Word窗口(即指
不用现场激活(inplace)方式激活TOleContainer)竟如此之难,还望高手指点,指点.
 
To: amsea
它要是做不成,我也就不问了.可是我觉得这应该能行吧,所以,就多加些分,来奖给
做出它的人.
 
To: amsea
它要是做不成,我也就不问了.可是我觉得这应该能行吧,所以就多加些分,来奖给
做出它的人.另外"用shell"怎么用,如果是不错的方法,也可以加一部分分.
 
shellexecute 的用法:

uses shellapi;

procedure TForm1.Button1Click(Sender: TObject);
begin
shellexecute(0,'open','c:/a.doc',nil,nil,sw_shownormal);
end;
 
shellexecute ?!,如果amsea说的是它,那咱们还是谈正题吧。见谅,见谅。
 
我没有看懂你的问题,ole不是就直接控制该文当了吗。还是想启动word.使者用service组件页中的控件
创建doc文件的了
 
我再解释一下,是这样,用TOleContainer.DoVerb()时,按说明,参数是show时,
就在TOleContainer内打开包含的文件,参数是open时,就用这个文件对应的可执行
文件打开它,即也是另外开了一个窗口。如果TOleContainer中包含的是一个bmp文件,
则很正常,而TOleContainer中包含一个word文件时,用参数open的效果和用show的
一样,我问的就是在包含word文件时,怎样用这个文件对应的可执行文件打开它。
 
有意思,你是想解决问题还是想干什么?

如果想解决问题:ole不是就直接控制该文当了吗。还是想启动word.使者用service组件页中
的控件即可 ,shxhongxi 说得没错呀。不用Service组件也直接写代码也可以。
需要帮助吗?

如果是其他目的:问Borland 或Borland中写TOleContainer代码的人好了,或者
问Microsoft的人。问到了记着把答案写在这里,我先替大家谢谢你了:)
 
但是,有这么一个问题:用Service组件或ole(你其实是指用CreateOleObject?)
是可以(但也只能)启动word,并控制文档,但至少有两个问题:
1 这个文档只能是一个文件,而不可能直接用TOleContainer中的文件。
即使把TOleContainer中的文件先释放出来,那么何时把改过的文件,
再嵌回呢?
2 这个word如果被使用者关闭,启动word的程序,好象难以知道。而用
TOleContainer嵌文件时,这个文件被关闭TOleContainer能立即知道,
后续的操作,比如把改变存到数据库中,就很好进行了。
 
这样问题才清楚了吗!
1.第一个问题,不难实现,我们可以在程序中检测Word文档是否被修改过,
然后再决定如何处理,包括,在嵌回把改变存到数据库
2。这个word如果被使用者关闭,启动word的程序,
这个问题 我在想一想
 
问题解决,300分速速献上:)。。。。
ole 为 TOleContainer 的 实例

ole.AllowActiveDoc:=False;
ole.AllowInPlace:=False;
ole.CreateObject('Word.Document.6',false);// PBrush
ole.DoVerb(ovShow);
 
哈,哈,哈!
这个问题已经被xjxdelphi解决,准备分分!
不过,再多说一句,
“1.第一个问题,不难实现,我们可以在程序中检测Word文档是否被修改过,
然后再决定如何处理,包括,在嵌回把改变存到数据库

不难实现?如果不用激活TOleContainer的方法,你何时检测Word文档是否被
修改过?又如何检测Word文档是否被修改过呢?

 
如果我没记错的话,word对象模型中应该有对象的属性表明word文档是否被修改过的
 
后退
顶部