如何在delphi中控制word 文档的打印、预览等(100分)

  • 主题发起人 主题发起人 hl-zhw
  • 开始时间 开始时间
H

hl-zhw

Unregistered / Unconfirmed
GUEST, unregistred user!
1. 我巳通过ole控件实现编辑word文档,但是由于Word没有将[文件]菜单嵌入我的主菜单中,故不能实现打印预览的效果。但当我用如下语句控制时,又说
RPC 服务不可用:
//创建
   oleContainer1.createobject('word.document');
olecontainer1.doverb(ovshow);

  //预览
   oleobject:=olecontainer1.oleobject.application.wordbasic
oleobject.fileprintpreview;

2. 如何将编辑的内容保存为Word文档
   我是如下操作的:

olecontainer1.savetoFile('c:/demo.doc');

我关闭我的程序,启动Word,打开该文件时发现全是乱码。



   
 
加上word版本检测
参考
Delphi5/Demos/Activex/Oleauto/SrvComp
下的word的例子
打开word,看help
 
autumn,请问用delphi 4可有解决方案
 
同样是自动化的实现的问题,查看以前的q
delphi5只是作了封装,大同小异
看看word basic的help把
 
好象深度历险有这样的控件吧!
 
即然不想把Word嵌入程序中那还用Ole控件干什么?
直接用Delphi5的组件。或自己调用Com接口就行了。
如下
var p:Variant
p:=CreateOleObject('Word.Application');
.....
p.Documents.Item(1).SaveAs('c:/demo.doc');
 
fencer兄弟及其它兄弟:请明白我的需求:

(1)我巳经将word程序嵌入到我的程序中,但是word菜单中的[文件]菜单没有嵌入我的菜单中,因此要自己编程实现页面设置、打印机设置,打印预览及打印等功能。
(2)我不想通过createoleobject(word.application)实现,因为word界面将独立于我的程序显示出来,而且如何控制用户关闭word时将修改内容保存到数据库中,如何让用户不能在word中打开多个文档,因为如果用户打开多个文档时,我也不知道该保存哪一个文档到数据库中。
(3)如果能说服我用createoleobject(word.application)实现我的功能,则需要以下方式的delphi程序实现:
如何让编辑的内容保存到数据中
如何接管word的事件处理,即将文档关闭事件的处理函数指向我的delphi程序的一个过程
如何动态修改word菜单,如去掉打开、新建、保存、保存、退出、关闭等子菜单,增加保存到数据库、返回到数据库子菜单、在工具栏中增加相应的快捷方式。






















 
各位兄弟:,关于此问题有很大的突破:实现增加菜单、删除菜单等功能
oleobject:=createoleobject('word.application');
oleobject.visible:=true; //show word
form1.visible:=false; //hide self program

menuitem:=oleobject.commandbars['Menu Bar'].Controls[1];

if menuitem.caption='文件(&F)' then //delete file menu
menuitem.delete(true);
//加上菜单也很简单,征求如何对加上的菜单事件进行处理。要求事件的处理过程为一delphi 过程。不能是宏或vb代码。



 
我也想知道
 
问题巳经解决:
不用olecontainer,它的缺点实在很多,改变ole自动化,至于将我的菜单insert到
word菜单,我通过建立了一个文档模板完成了。在模板中设计了一些宏。这些宏被word认为是缺省安伍的,因此运行宏不会弹出警告框。


引用 OFFICE97 及WORD97单元


oleobject:=Createoleobject('word.application');
oleobject.visible:=true
oleobject.documents.open('myfilename')
//调用模板中的宏以显示我的菜单及工具栏到word中
myform.visible:=false;


另在我的程序与word程序的通讯问题:
我定义了一个消息,
当用户在word中点了我的自定义按钮时会自动执行一个宏,该宏会发消息给我,因而我可以在我的程序中处理某此事情,比如说用户选中了一段文字,然后点保存到索引库按钮。当我收到此消息时,我通过oleobject.selection.text得到选中的文字,然后将此文字保存到我的数据库中

当用户关闭word时,会在模板的关闭事件处理中发消息给我,因而执行
MyForm.visible:=true;显示我的程序窗体


各位 还有什么意见,请快提。我要结束任务了。










 
多人接受答案了。
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部