程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> Delphi與Word間的融合技術(4)

Delphi與Word間的融合技術(4)

編輯:Delphi

五、從數據庫讀取文件到本地硬盤和從本地硬盤讀取文件到數據庫

在數據庫上使用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:文檔切換,在文檔從自己修改的文稿和其他人修改的文稿之間切換產生事件,主要處理設置文檔權限等。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved