请教关于用delphi编程将word文档包含到窗体中

minizhang 2005-09-18 09:16:23
本人在用delphi对word文档进行编程中,遇到个问题,就是希望将word打开后包含到delphi创建的窗体中,从而对其进行操作。
我已经试过一些方法也查过很多资料,正如一片文章<<Delphi与Word之间的融合技术>>所说:
a.通过Delphi的控件TOleContainer 将Word嵌入
这是最简单的Ole嵌入,能够直接将Word文档调用,只需要使用ToleContainer.Run就可以将Word文档直接启动。且这样启动的Word文档与Delphi程序是一个整体(从界面上看),但是它存在不可克服的缺点,即不能通过Delphi控制Word文档,也就不能实现将灵活操纵Word的目的。

b.使用Delphi提供的Servers控件调用Word,使用Word的属性
使用Delphi的Servers控件来操纵Word,在编程时Delphi能够实现代码提示,总体上看能够较好的实现Delphi对Word的控制,但是还有一些Word的功能不能在Delphi中调用(比如自己编写的VBA宏代码)。且实现功能时本来在VBA代码中可选则参数在Delphi调用的时候必须添加,否则,连编译都不能通过。 !!本方式启动的Word与Delphi程序分属两个窗体。!! 此办法仅能作为一个参考。

c.通过真正的Com技术,将Office软件目录中文件MSWORD9.OLB中的类库全部导入Delphi中,利用Com技术编程利用真正的Com技术,将MsWord9.OLD文件类库导入,然后利用Com技术进行使用。整体上类似使用Delphi的Servers控件,稍微比Servers控件麻烦,优缺点与Servers控件相同。

d.使用CreateOleObject将启动Word,然后以Ole方式对Word进行控制。
本办法是使用以CreateOleObjects方式调用Word,实际上还是Ole,但是这种方式能够真正做到完全控制Word文件,能够使用Word的所有属性,包括自己编写的VBA宏代码。与Servers控件和com技术相比,本方法能够真正地使用Word的各种属性,和在VBA中编写自己的代码基本一样,可以缺省的代码也不需要使用。 !!本方式启动的Word与Delphi程序分属两个窗体!! 缺点是使用本方法没有Delphi代码提示,所有异常处理均需要自己编写,可能编写时探索性知识比较多。

不知用什么办法能够实现,像通过Delphi的控件TOleContainer 将Word嵌入到窗体,又可以通过delphi对嵌入到窗体中的word文档进行操作。
请高手大虾们指点,谢谢,祝大家中秋愉快,身体健康:)
...全文
246 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
minizhang 2005-09-19
  • 打赏
  • 举报
回复
感谢myy() 和 steelxu5的回答。
使用TOleContainer控件,delphi不能直接操作创建word文档,向里面添加内容,我的目的是使用Servers控件页中的word相关控件来直接操纵创建的Word文档。
GHOSTSEA 2005-09-19
  • 打赏
  • 举报
回复
学习中,关注~~~~~~~~~~~
steelxu5 2005-09-19
  • 打赏
  • 举报
回复
如果是为了让用户阅读,那导入到程序中或是调用WORD都没问题,但如果要编辑,最好还是让用户直接用WORD,就是采用SHELL调 WORD,因为你总不能自己去写让些文本编辑的控件,比如艺术字之类
shellexecute 这个函数驱动本地就可以了
myy 2005-09-18
  • 打赏
  • 举报
回复
用TOleContainer将Word嵌入到窗体就可以,TOleContainer也可以象Ole一样控制Word,
只是没那么直接罢了,比如下面的函数可以获取TOleContainer内Word文档的总页数:

function TfmEditWord.GetDocumentPageCount:Integer;
var
app, sel, page : Variant;
begin
Result:=-1;
try
app:=TOleContainer1.OleObject.Application;
sel:=app.Selection;
page:=sel.Information[wdNumberOfPagesInDocument];
Result:=StrToIntDef(VarToStr(page),-1);
except
;
end;
end;

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧