資源簡介
一、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,Revent,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=False);
五、從數據庫讀取文件到本地硬盤和從本地硬盤讀取文件到數據庫
在數據庫上使用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 Office.CommandBarComboBox
定義Combo控件產生事件的模塊
Dim ctlComboBoxHandler As New ComboBoxHandler
產生Combo對話框
Set Cbo_ChooseDoc = CommandBars("添加的菜單").Controls.Add(Type:=msoControlComboBox, Temporary:=True)
進行文件句柄設置,以產生Combo_Change事件
Set ctlComboBoxHandler.ComboBoxEvent = Cbo_ChooseDoc
產生事件后,在類模塊Combohander內選擇ComboBoxEvent的Change事件,即可書寫事件代碼
Sub ComboBoxEvent_Change(ByVal Ctrl As Office.CommandBarComboBox)
九、一些Word的事件
VBA代碼中處理的Word事件有:Document_Close
Application事件中需要處理的有:DocumentBeforeClose,DocumentChange。
Document_Close:事件在文檔關閉時產生事件
DocumentBeforeClose:在文檔被關閉以前先于Word判斷文檔是否保存,給出相應提示并進行相應處理。
DocumentChange:文檔切換,在文檔從自己修改的文稿和其他人修改的文稿之間切換產生事件,主要處理設置文檔權限等
代碼片段和文件信息
- 上一篇:Couchba
se使用教程(文檔) - 下一篇:C# 異或線畫法 Graphics
評論
共有 條評論