Delphi控制Word(完整版)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、Delphi程序启动Word
采用CreateOleObjects的方法来启动Word,调用VBA代码,具体实现过程为:
首先使用GetActiveOleObject('Word.Application')判断当前内存中是否存在Word程序,如果存在,则直接连接,如果没有Word程序,则使用CreateOleObject('Word.Application')启动Word
二、Delphi程序新建Word文稿
格式:WordDocuments.Add(Template,NewTemplate,DocumentType,Visible)
Template:使用模板的名称,
NewTemplate:新建文档的类型,True表示为模板,False表示为文档
DocumentType:文档类型,默认为空白文档
Visible:打捞的窗口是否可见
举例:Doc_Handle:=Word_Ole.Documents.Add(Template:='C:\Temlate.dot',NewTemplate:=False);
三、Delphi程序打开Word文稿
格式:WordDocuments.Open(FileName,ConfirmConversions,ReadOnly,PassWordDocument,PasswordTemplate,Reve nt,WritePasswordDocument,WritePassWordTemplate,Format,Encoding,Visible)
FileName:文档名(包含路径)
Confirmconversions:是否显示文件转换对话框
ReadOnly:是否以只读方式打开文档
AddToRecentFiles:是否将文件添加到"文件"菜单底部的最近使用文件列表中PassWordDocument:打开此文档时所需要的密码
PasswordTemplate:打开此模板时所需要的密码
Revert:如果文档已经,是否重新打开文档
WritePasswordDocument:保存对文档更改时所需要的密码
WritePasswordTemplate:保存对模板进行更改时所需要的密码
Format:打开文档时所需使用的文件转换器
Encoding:所使用的文档代码页
Visible:打开文档的窗口是否可见
举例:
Doc_Handle:=Word_Ole.Documents.open(FileName:=Doc_File,ReadOnly:=False,AddToRecentFiles:=False);
四、Delphi程序保存Word文稿
格式:WordDocuments.SaveAs(FileName, FileFormat, LockComments, Password, AddToRecentFiles, WritePassword, ReadOnlyRecommended,
EmbedTrueTypeFonts, SaveNativePictureFormat, SaveFormsData,
SaveAsAOCELetter)
FileName:文件名。

默认为当前文件夹和文件名。

FileFormat 文档保存的格式。

LockComments 如果为True,则此文档只允许进行批注。

Password 打开文档时的口令。

AddToRecentFiles 如果为True,则将文档添至"文件"菜单中最近使用的文档列表中。

WritePassword 保存对文档的修改所需的口令。

ReadOnlyRecommended 如果为True,在每次打开文档时,Word 将建议用户采用只读方式。

EmbedTrueTypeFonts 如果为True,则将文档与TrueType 字体一起保存。

SaveNativePictureFormat 如果为True,则从其他系统平台(例如Macintosh)导入的图形仅保存其
Windows 版本。

SaveFormsData 如果为True,则将窗体中用户输入的数据存为一条数据记录。

SaveAsAOCELetter 如果文档包含一个附加,当此属性值为True 时,将文档存为一篇AOCE 信笺(同时保存邮件)。

举例:
Word_Ole.Documents.SaveAs(FileName:=Doc_File,FileFormat=wdFormatDocument,AddToRecentFiles=Fals
e);
五、从数据库读取文件到本地硬盘和从本地硬盘读取文件到数据库
在数据库上使用Image二进制字段保存,使用Stream流的方式。

创建文件流:
Word_FileStream:=TFileStream.Create(Target_Name,fmOpenWrite or fmCreate);
Word_FileStream.Position:=0;
保存到数据库的Image字段:
TBlobField(AdoQuery1.FieldByName(Column_Name)).SaveToStream(Word_FileStream);
从数据库读取文件到本地硬盘:
TBlobField(ADOQuery1.FieldByName(Column_Name)).loadfromStream(Word_FileStream);
释放文件流:
Word_FileStream.Free;
六、全局消息的定义
因为word和Delphi程序是两个软件,相互之间通讯比较麻烦,所以使用全局消息的方法进行。

全局消息必须首先注册,Windows返回系统空闲的消息号,当注册的消息相同时,Windows系统返回同一个值,这样就保证了使用这个消息号在两个程序之间通讯。

定义消息的办法:
szMessageString: pchar = 'XIDIAN_11_Stone';
FMyJoinMessage := RegisterWindowMessage(szMessageString);
发送消息的方法:
SendMessage(对方句柄,消息,消息附带短变量,消息附带长变量)
七、Delphi程序接收消息的方法
Delphi接收消息有两种,一是重载特定消息,二是重载WndProc函数,在里面选择相应消息进行处理。

法一,每次只能处理一条消息,而法二能够同时处理多条消息。

对于法二,声明如下:
procedure WndProc(var Message: Tmessage);override
必须注意,使用时需要在处理完自己消息处理后继承WndProc(Message)函数,否则系统会崩溃!
八、Word中Combo对话框的动态生成以及Change事件
建立类模块Combohander,在内部定义事件
Public WithEvents ComboBoxEvent As mandBarComboBox
定义Combo控件产生事件的模块
Dim ctlComboBoxHandler As New ComboBoxHandler
产生Combo对话框
Set Cbo_ChooseDoc = CommandBars("添加的菜单").Controls.Add(Type:=msoControlComboBox, Temporary:=True)
进行文件句柄设置,以产生Combo_Change事件
Set boBoxEvent = Cbo_ChooseDoc
产生事件后,在类模块Combohander内选择ComboBoxEvent的Change事件,即可书写事件代码
Sub ComboBoxEvent_Change(ByVal Ctrl As mandBarComboBox)
九、一些Word的事件
VBA代码中处理的Word事件有:Document_Close
Application事件中需要处理的有:DocumentBeforeClose,DocumentChange。

Document_Close:事件在文档关闭时产生事件
DocumentBeforeClose:在文档被关闭以前先于Word判断文档是否保存,给出相应提示并进行相应处理。

DocumentChange:文档切换,在文档从自己修改的文稿和其他人修改的文稿之间切换产生事件,主要处理设置文档权限等。

相关文档
最新文档