精品主页 | 软件下载 | 系统下载 | 精品导航| 精彩图片 | 转帖工具 | 版主申请 | 影视下载
发新话题
打印

Delphi与Word之间的融合技术(3)

Delphi与Word之间的融合技术(3)

  


                  五、从数据库读取文件到本地硬盘和从本地硬盘读取文件到数据库





在数据库上使用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:文档切换,在文档从自己修改的文稿和其他人修改的文稿之间切换产生事件,主要处理设置文档权限等

TOP

发新话题