• 休闲生活
  • 教育教学
  • 经济贸易
  • 政法军事
  • 人文社科
  • 农林牧渔
  • 信息科技
  • 建筑房产
  • 环境安全
  • 当前位置: 达达文档网 > 达达文库 > 环境安全 > 正文

    基于Delphi的Word访问控制及其简单举例

    时间:2020-09-19 07:56:31 来源:达达文档网 本文已影响 达达文档网手机站

    摘要:本文总结了四种Delphi访问和控制Word的方法,对DDE动态数据交换技术操纵Word文档的方法进行了比较详细的叙述,并就实现Delphi对Word文档自接操作进行了简单举例。

    关键词:Delphi;Word;访问和控制

    中图分类号:TP312文献标识码:A文章编号:1009-3044(2008)14-20867-02

    1 引言

    Delphi是一个高效的可视化数据库管理系统开发工具,具有功能强大、结构严谨、开发周期短、编译运行速度快、处理数据库方便快捷等特点。Delphi 7.0更是成倍地增强数据库和网络处理功能,它封装了大量组件,并完全公开VCL以及CLX源代码,是专业数据库程序最理想的开发工具。在对Microsoft的产品Office的访问与控制力而言,Delphi也表现得毫不逊色,本文就Delphi与Word相结合进行简略论述,内容包括Delphi访问和控制Word的几种方法,用Delphi生成Word报告以及动态结构表格。

    Word是世界上使用范围最为广泛的文字处理系统。虽然许多应用程序开发上具都有其自身的报表生成系统,但用Word作为应用程序的报表输出上具却具有许多不可替代的优点:

    (1)可以生成图、文、表并茂的文档;

    (2)可以生成更为复杂的报表,包括多层次嵌套表格、斜线表格等;

    (3)用户可以定制和修改文档模板;

    (4)用户可以对生成的文档做进一步的加上;

    (5)生成的文档,用户可以进行转储和发布。

    可见,用Word作为应用程序的报表输出上具有可以进一步扩展应用程序的功能,提高系统数据资料的利用率和可共享性,便于用户对所生成的报表或文档进行二次加工和重复使用,这是那些应用程序开发上具自带的报表生成系统所不可比拟的。

    Word绝不仅仅是一个文字处理系统,它是一个集成化环境,它集成了VB可以通过编程来实现对Word功能的扩展。Word提供的强大的编程接口技术使得我们利用各种编程上具通过程序对其进行控制成为可能。

    2 Delphi访问和控制Word的几种方法

    一般的,Delphi访问和控制Word的方法可以分为四种,即使用OLE(对象链接嵌入)、使用Delphi提供的Servers控件、直接使用COM(组件对象模型)技术、通过DDE(动态数据交换)技术调用Word。

    2.1 使用OLE技术

    OLE(对象链接嵌入),是Microsoft公司同计算机界合作并发展起来的产品规范,能够共享应用程序的信息资源。

    (1)使用Tole Container控件调用Word

    System面板上的Tolecontainer控件能够在应用程序的窗口上创建一个OLE用户区域,用于实现Delphi与外部某个对象包括Word的接口。该方法是一种简单的OLE嵌入.能够直接调用Word文档。使用时只需要调用Tolecontainer的Run方法就可以将Word文档直接启动。而且,这样的启动,Word文档与Delphi程序从界而上看是个整体,怎样灵活操纵Word文件是这种方法的难点。

    (2)用Create Ole Object方式调用Word

    本方法是使用Create Ole Objects方式创建并调用Word,实际上是OLE的另一种应用形式,这种方式能够做到灵活地控制Word文件,能够使用Word的所有属性,包括自己编写的VBA宏代码,可以对Word文档实现较完美的控制。该方法的难点在于需要自己编写所有对异常事件的处理过程,需要程序员具备定的编程经验。

    2.2 使用Delphi提供的Servers控件

    Delphi控件而板上有组Servers控件,能非常方便地访问Office对象。使用Delphi中提供的相应的控件来操纵Word的优点就是在编程时Delphi能够实现友好的代码提示,总体上看能够较好地实现Delphi对Word的控制。其难点在于一些重要的Word功能,如实现自己编写的VBA宏代码有些繁琐.控制难度偏大。在该方式下,Word文档与Delphi程序分属两个窗体。

    2.3 直接使用COM技术

    从结构上讲,COM是OLE的核心。使用COM技术的方法是将Office 2000软件日录中文件MSWORD9.OLB中的类库个部导入Delphi中。(其他版本的Office导入相应的文件),利用COM技术进行使用。整体上与使用Delphi的Servers控件相似,故而其优缺点也与使用Servers控件大体相同。

    2.4 通过DDE技术实现Delphi调用Word

    DDE是建立在Windows内部消息系统、全局原子和共享全局内存基础上的一种协议。用来协调Windows应用程序之问的数据交换和命令调用.可以作为不同程序在运行期间实现对数据的动态交换的一种通用技术。

    由于篇幅的限制。本文只对DDE动态数据交换技术操纵Word文档的方法进行叙述。

    该方法也是通过VBA来实现对Word的调用。DDE协议使用三级命名:服务(service)、主题(topic)和数据项(items)来标识DDE所传递的数据单元。服务使应用程序具有了提供给其他程序的数据交换能力,一般服务就是应用程序的文件名;主题是对服务器有意义的信息单元,许多服务器都有默认的主题System,每次DDE客户与服务程序之间的对话都是先由客户启动的,所以在每次客户启动之前,DDE服务器必须先投入运行。以Word作为要连接的服务器,在与其建立连接之前要先设定好连接的服务与主题,在本文示例中分别设定这两项为:“Winword”和“System”,当设置好连接后就可以通过Delphi提供的DDE Client Conv组件的OpenLink函数打开与这个服务的连接,剩下的工作就是向Word服务器发送和执行宏命令,用该组件的函数Execute Macro来实现。具体示例如下:

    加入DDE客户端组件:新建一App工程Word DDE,然后在Component Palette组件条的System属性页里选择DdeClientConv组件,并把它拖放到窗体上。修改其Name属性为DDE Client。

    添加同DDE服务进行交互的代码:在工程上添加一个过程Run Macro,用于打开与Word服务器之间的链接,并通知服务器执行由Macro标识的宏命令,让Word按用户的意图完成响应的动作。完成之后由客户力断开这次连接,完成一次会话。下面是上述过程的实现代码:

    procedure TForml.RunMacro Macro: pChar); varp Macro:array 0..80] of Char;

    beginDDE Client.SetLinlk "Winword","System");//设置连接

    DDE Client.OpenLink;//按设置打开连接

    StrpCopy pMacro, Macro);

    if Not DDE CIient.Execute Macro pMacro,false) then//执行宏命令

    Show Message "Unable to Execute Macro");

    DDE CIient.Close Link; //断开连接

    end;

    宏命令的执行:宏(Macro)是客户程序要服务器完成的一些操作指令,对于特定的Microsoft Word而言,多是字处理方面的宏命令.这此宏命令完成的功能大多在Word的菜单下都能找到与之相匹配的菜单。可以向窗口添加个按钮或是菜单然后在其处理函数中添加执行宏的代码如下:

    procedure TForml.Buttonl Cliclk Sender:TObject);

    begin

    //创建一个新文档.宏[FileNew]由函数Runl Macro通知Word

    Run Macro [FileNew];

    end;

    3 用Delphi控制Word的具体实例

    3.1 创建Word及Word文档

    创建并获取Word Application和Word Docrunent对象的实例是对Word进行控制的基础。Delphi中,可以通过静态和动态两种方法来实现。

    (1)静态方法

    在Form中加入TWord Application和TWord Docrunent控件的实例Word Application和Word Docrunent对象,然后在相应的事件中加入如下处理程序:

    Word Applicationl connect//启动Word

    Word Applicationl Window State=wdWindowStateMininizg//窗口最小化

    Vi"orrLlpplicationL Activate //激活Word

    Word Docrunentl Connect//连接Word文档

    Word Docrunentl ActiVate//激活Word文档

    Word Applicationl Visible=false//窗口隐藏

    启动后,便可引用Word Applicationl Active Docrunent指代Word的活动文档,引用Word Applicatictnl Selection指代Word活动文档中当前的光标位置或选择集,进而对他们的子对象和属性进行控制。

    (2)动态方法相应过程中的程序为:

    … …

    Var Word AppTWord Application

    Word Doc,DotFile,DocFile OleVariant,

    Begin

    WordApp=TWordApplication Create(n il);//启动Word

    WordApp Visible=False//窗口隐藏

    DotFile=ExtractFilePath(Application ExeName)+‘Kcdjdot’;

    DotFile=False

    WordDoc=WordApp Documents Add(DotFile,DocFile);//用模板创建Word文档;

    在上面的例子中,变量WordApp、WordDoc分别储存Word应用程序和Word文档的实例。需要注意的是,存储Word及其子对象的所有变量都必须是0 leVariant类型。“Kcdjdot”是应用程序目录下的一个Word模板文件。

    用静态方法启动Word,在激活Word之前决不能隐藏Word窗口,否则就会出错。这样,在启动Word的过程中Word窗口总是要闪现一下,不能真正实现“后台运行”,很不美观。虽然可以用窗口最小化的方式弥补一下,但终究不是一个真正的程序员所追求的完美效果。用动态方法启动,完全克服了上述缺点,似乎运行速度也更快一些。

    3.2 关闭Word及保存Word文档

    为释放内存,Word文档生成完毕后要关闭Word。同时对生成的Word文档进行保存。下面的示例程序中,先打开一个保存文件对话框,以对话框中的文件名保存Word文档,然后退出Word应用程序:

    IF SaveDialogl.Execute then begin

    DocFile=SaveDialogl.FileName

    DocSaveAs(DocFile);//保存Word文档

    WordApp Quit//关闭Word

    End;

    4 结束语

    通过上面的介绍不难看出在Delphi中灵活操纵Word文档,主要是利用VBA。我们也可以使用Office的其他VBA对其他Office工具如Microsoft Execl, Microsoft Access进行调用。要实现Delphi对Office工具的完全控制,实现其所有功能,需要我们不断地学习与摸索,挖掘Delphi的内涵,感受Delphi的魅力。

    参考文献:

    [1] 于永生. 怎样在Delphi中操纵Word文档[J]. 科技情报开发与经济,2006,16(2):228-229.

    [2] 赵良辉. Delphi中报表的多种实现方法研究[J]. 现代制造工程,2004,(3):25-27.

    [3] 陈省. Delphi深度探索[M]. 北京:电子工业出版社,2004:193-233.

    [4] 徐新华. Delphi 5高级编程GUI编程[M]. 北京:人民邮电出版社,2000.

    [5] 葛涛. Delphi中运用FastRepoit设计和制作报表[J]. 微型电脑应用,2004,(3):63-65.

    [6] 高骏. 使用Delphi直接编辑演示文稿的实现方法[J]. 河南师范学院学报(自然科学版),2005,33(3):144-146.

    注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文

    相关热词搜索: 举例 访问控制 简单 Delphi Word

    • 生活居家
    • 情感人生
    • 社会财经
    • 文化
    • 职场
    • 教育
    • 电脑上网