运用delphi设计office word插件

上传人:子 文档编号:46457469 上传时间:2018-06-26 格式:PDF 页数:9 大小:358.75KB
返回 下载 相关 举报
运用delphi设计office word插件_第1页
第1页 / 共9页
运用delphi设计office word插件_第2页
第2页 / 共9页
运用delphi设计office word插件_第3页
第3页 / 共9页
运用delphi设计office word插件_第4页
第4页 / 共9页
运用delphi设计office word插件_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《运用delphi设计office word插件》由会员分享,可在线阅读,更多相关《运用delphi设计office word插件(9页珍藏版)》请在金锄头文库上搜索。

1、 图像设计 多媒体类 机械制图 办公软件 操作系统 系统编程 网站编程 网页制作 数据库类 网络路由 网络工程 网络安全 考试认证 设为首页 | 本页加入收藏 【3dsMax|Flash|Authorware|Maya|Director|Premiere|AfterEffects|会声会影】【PhotoShop|Fireworks|CorelDraw|Illustrator|Painter|PhotoImpact】 CAD AutoCad Cam350 ProEngineer GCcam MATLAB Unigraphics SolidWorks CAXA Solid3000 Cimatron

2、 EdgeCAM 系统 安全 防火墙 病毒 WinXP Win2003 Vista 数据库 Oracle MSSQL Mysql Sybase DB2 Informix PostgreSQL 开发 编程 ASP PHP JSP ASP.NET Cgi .Net 网络 路由器 交换机 IPv6 VPN VLAN VOIP 3G 编程设计 【 汇编 UML Delphi VB C PB VC C+ C# Java 程序问答 】 IT认证 职场新闻 Google 提供的提供的广广告告MAPI Delphi 编程之道 Outlook Delphi 编程软件 当前位置: 库库中文网 系统编程教程 Del

3、phi语言 Delphi编程技巧运用运用Delphi设计设计Office Word插件插件 学院最新推荐文章2006 IBM2006 IBM大里面华区软件合作大里面华区软件合作如果说“IBM论坛”,IBM每年一度的盛会,是以气势宏大和包罗万“活性存储”让汽车更有活性“活性存储”让汽车更有活性近日,浪潮存储“活性存储”产品与方案成功应用于中国南方汽车股份有职场提升地职场提升地1010条捷径条捷径(1)(1)在这个越来越以技术为中心的世界里,职位的进阶需要什么?带着这个问PS教程推荐单色背景抠图简明用PS设计相架Refactoring for Delphi The most popular and

4、 full featured native Delphi refactoring browser www.ModelMakerTBone Densitometers ConnectMode: ext_ConnectMode; const AddInInst: IDispatch; var custom: PSafeArray); safecall; procedure OnDisconnection(RemoveMode: ext_DisconnectMode; var custom: PSafeArray); safecall; procedure OnAddInsUpdate(var cu

5、stom: PSafeArray); safecall; procedure OnStartupComplete(var custom: PSafeArray); safecall; procedure OnBeginShutdown(var custom: PSafeArray); safecall; 使用快捷键CtrlShiftC来完成类定义,并添加方法的实现部分的框架到单元页码,2/9Delphi编程技巧:运用Delphi设计Office Word插件库库中文网- 系统编程教程 QQ.2008- 04- 06http:/ ShowMessage(连接到 + WordApp.Name);

6、添加下面代码到OnDisconnection方法的实现部分: ShowMessage(断开插件); 这样就完成了一个最简单的插件了,接下来就是编译并注册插件到Word中去。 注册Office插件 同其他COM对象一样,一个Office插件必须在系统中注册后才能使用。在Delphi中选择Run | Register ActiveX Server菜单命令,就可以注册我们刚才创建的插件。除了标准的COM注册,还需要进行Office 相关的注册,这需要在注册表中创建一个新的键值: HKEY_CURRENT_USERSoftwareMicrosoftOffice Addins 就是插件宿主应用程序的名字

7、(这里是Word),是自动化对象的名字(这里是DIWordAddIn.AddIn,ActiveX library和类名的组合)。 HKEY_CURRENT_USER Software Microsoft Office Word AddinsDIWord AddIn.AddIn 我们还需要在这个键值下创建几个值:一个DWORD类型的名为LoadBehavior的值决定插件是如何加载及被应用程序调用的。在本文中我们设定它为3相当于和的结合就是应用程序连接插件并在启动时自动加载。值的意义列在表1.2中,各种值可以相互组合。 表1.2 值 意 义 $0 断开,不加载 $1 连接,加载 $2 自动启动加

8、载 $8 只有当用户请求时才加载 $16 只在下次程序启动时加载一次 还有一些其他的值可以出现在注册表键值下,比如定义出现在应用程序COM管理器对话框中的名字,以及设定是否可以从命令行激活插件。 Office 2000用户界面 ffice应用程序共享一组通用的用户界面元素对象、菜单条、工具条通用控件(比如工具条按钮和组合编辑框)以及Office小助手。 页码,3/9Delphi编程技巧:运用Delphi设计Office Word插件库库中文网- 系统编程教程 QQ.2008- 04- 06http:/ Server,我们不得不手工创建一个Office公开的CommandBarButton对象的

9、Delphi封装。这个对象对应于Office应用程序的一个简单的菜单项或工具条按钮。 对大多数的Microsoft的应用程序来说,Application对象代表对象模型的切入点。Office Application类提供了对CommandBars属性的引用。CommandBar对象包括工具条、浮动工具条和菜单。Office对象模型允许我们创建或更新已有的CommandBars对象。Office_TLB.pas单元包含了ICommandBar接口,它可以被用来修改CommandBar对象。 CommandBar有一个Controls集合属性,对应于一组CommandBarControl控件。Co

10、mmandBarControl控件对应于放置在工具条上的控件,比如一个CommandBarButton对应一个简单的工具条按钮(或菜单项),CommandBarCombo控件对应组合编辑框,CommandBarPopup对应于下拉菜单和CommandBarActiveX对应于ActiveX控制。 在Office_TLB.pas单元中,除了ICommandBarButton接口,还有一个ICommandBarButtonEvents接口用来提供对工具条上控件的事件支持。事件的支持通常是通过连接点、事件接收连接到可连接对象来实现。但这比较麻烦,我们还可以通过更简单的办法来实现事件支持。检查一下De

11、lphi在word_tlb.pas单元创建的TWordApplication的实现代码可以发现Delphi封装了每一个可连接对象,自动实现了事件接收机制。这个单元可以作为一个范本用来创建自定义的对接口对象的封装。 BtnSvr.pas单元包含了一个手工创建的Delphi封装。除了按标准的Delphi属性方式实现了CommandBarButton对象的属性外,还实现了InitServerData、InvokeEvent、Connect、ConnectTo和Disconnect方法。可以注意到这部分完全是模仿TWordApplication实现部分编写的CommandBarButton事件实现。主

12、要就是在InitServerData方法中定义服务器数据。根据Office_TLB.pas中不同的接口GUID,定义一个CommandBarButton接口的内部的接口Fintf,设定InvokeEvent方法来激活基于定义在事件接口部分的DispID的Delphi事件支持。最后,Connect、ConnectTo和Disconnect方法设定Fintf给需要的接口并接收相应的事件。 定义在BtnSvr.pas单元中的Delphi封装类命名为TButtonServer。它需要从TOleServer对象继承以便支持事件处理。 同应用程序连接 有了工具条按钮封装类后,接下来要声明一个TWordAp

13、plication域来保存对Word Application对象的引用。此外还需要为新的工具条定义一个接口指针以及两个域使用新的TButtonServer类来保存我们要创建的新的工具条按钮和菜单项。 在插件类的private部分添加: FWordApp : TWordApplication; DICommandBar : CommandBar; DIBtn : TButtonServer; DIMenu : TButtonServer; 在OnConnection方法中,保存应用程序指针: var WA : Word_TLB._Application; begin 页码,4/9Delphi编程

14、技巧:运用Delphi设计Office Word插件库库中文网- 系统编程教程 QQ.2008- 04- 06http:/ := TWordApplication.Create(nil); WA := Application as Word_TLB._Application; WordApp.ConnectTo(WA); . TWordApplication是Delphi 5中带的Server组件,ConnectTo 方法是用来连接插件和Word提供的接口。因为TWordApplication 把接口事件映射成了Delphi事件,我们可以直接使用标准的Delphi语法来设定事件处理过程。示意如

15、下: WordApp.OnEventX := EventXHandler; 比如我们如果想在Word的选区发生改变时实现某项功能,就可以设定OnWindowSelectionChange 事件。 插件如何创建新的工具条、按钮和菜单 在创建新的工具条和按钮前,需要为按钮的OnClick过程先创建事件处理函数,下面就是简单的处理函数例子: procedure TAddIn.TestClick(const Ctrl: OleVariant; var CancelDefault: OleVariant); begin ShowMessage(有人点我了!); CancelDefault := True; end; CancelDefault参数用来设定是否替代缺省的菜单或工具条按钮的处理过程。这里不需要设定这个参数,因为我们将在插件中创建一个新的按钮。插件注册为在程序启动时被加载,所以OnStartupComplete方法一定会被调用,用这

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号