使用Microsoft自动化组件

本文介绍了如何在Delphi中使用Microsoft自动化组件,如TOleServer,来控制Office应用程序,如Word。首先,通过引入类型库并创建组件,例如TWordDocument,可以实现远程连接到Word实例并进行文本编辑、保存等操作。此外,文章还讲解了如何导入类型库创建自定义自动化服务器组件,如Visual SourceSafe,以及如何使用CreateOleObject和CreateRemoteComObject函数直接创建自动化服务器实例。最后,文章提到了Access数据库的自动化处理,展示了如何利用Access的导入规范解析固定格式数据。
摘要由CSDN通过智能技术生成

作者:
摘自:网络

在Servers页面上的组件是TOleServer的子类。类型库(.TLB)被引入到Delphi中。一个类型库是一种描述一个自动化服务器接口的特殊文件。当一个TLB被引入到Delphi的时候,Delphi将这个类型库封装到一个组件类中;这个组件可以被安装到VCL中。在组件面板中Servers属性页上的组件是自动化服务器,每个自动化服务器代表Microsoft Office中一个特定的应用程序部分。

注意:本章包括一个摘自Evil Empire详细材料的讨论。建议你学习这门技术。如果您是一个反Microsoft的成员,您可以跳过本章,但是要记住Inprise为我们提供代表这些应用程序服务器的组件有它足够的理由。如果要使用Delphi控制Microsoft Office可以帮助您的话,考虑使用这些组件。

自动化是COM协议的一部分。自动化描述了服务器应用程序怎样将接口提供给客户应用程序以及客户端怎样通过编程控制服务器。客户应用程序被叫做自动化控制器。自动化控制器可以是使用任何支持自动化的语言编写的应用程序或者动态链接库。您可以很容易地在Delphi中创建客户端控制器和自动化服务器。

本章介绍了怎样使用当今世界上一些最具有特色的对象——Microsoft Office应用程序。绝大多数,可能是全部的Office都可以用作自动化服务器。这意味着它们可以被用作独立的应用程序或者应用程序服务器。使用这些功能强大的应用程序服务器可以使开发者能够提供功能强大的文字处理、数据库、数字处理和关系管理的能力,这取代了许多用户已经购买的一些现有的代码。

12.1  TOleServer

TOleServer是TComponent的子类。OleServer对象具有TComponent的所有特性和方法,并且这些特性和方法都在TOleServer类中被定义了。Servers属性页上的组件是Microsoft Offiec自动化服务器,TOleServer是这些组件的直接祖先类,所以很好的理解ToleServer可以使您有一个更高的起点。表12.1列出了OleServer中所有的特性,表12.2列出了OleServer中所有的方法。除了OleServer特性,TOleServer的每一个子类将引入在类型库中定义的行为和数据。我们将在本章的后面部分作详细的介绍。

表12.1  TOleServer特性,其中AutoConnect,ConnectKind和

RemoteMachineName是由TOleServer引入的公开特性

特性

说明

AutoConnect

如果这个特性为True,服务器在运行时连接。如果在运行时将其特性改为False将不会在运行时产生影响

ConnectKind

由TConnectKind枚举定义,描述服务器怎样被连接。比如说,ckRunningOrNew将连接到服务器的一个运行实例或者开始一个新的实例。可以选择的项为:ckRunningOrNew,ckNewInstance, ckRunningInstance, ckRemote,ckAttach ToInterface

EventDispatch

保护特性,可以被为COM事件特性服务的子孙类所使用

RemoteMachineName

指定运行服务器的机器名,将ConnectKind特性设置为ckRemote,您将连接到其他独立计算机的服务器上

ServerData

保护的记录特性,它保存了有关连接到的自动化服务器的信息

下面用表12.1的特性作一个示范,遵循下面所列的步骤,将连接到您的网络中其他计算机上的一个Microsoft Word实例(需要远程计算机的名称,并且远程计算机必须有一个Microsoft Word的一个拷贝。在“控制面板”中的“网络”小应用程序中的“标识”属性页中的“计算机名”域中可以找到计算机名称)。

1.创建一个新的Delphi应用程序。

2.在窗体上的任何位置放置一个TButton组件。

3.在窗体上放置一个TWordDocument组件。

4.在Object Inspector中(可以按F11打开),将WordDocument组件的Remote MachineName特性设置为安装有Microsoft Word的计算机名称(在“控制面板”中的“网络”小应用程序中的“标识”属性页中的“计算机名”域中可以找到计算机名称或者你也可以使用机器中相应于RemoteMachineName的IP地址)。

5.第4步将ConnectKind特性改变为ckRemote。

6.双击第2步中窗体上的按钮,为按钮添加Click事件处理程序。

7.将下面的代码添加到第6步创建的事件处理程序中。

procedure TForm1.Button1Click(Sender: TObject);

var

FileName : OleVariant;

begin

WordDocument1.Connect;

try

WordDocument1.Content.Text := 'Viva Las Vegas!';

FileName := 'c:\temp\vegas.doc';

WordDocument1.SaveAs(FileName);

finally

WordDocument1.Disconnect;

end;

end;

注意:您不能够使远程计算机上的Word服务器实例在远程计算机上可视。但您可以使Word 服务器实例在运行客户端控制器的计算机上可视。

WordDocument已经被连接了。如果您和远程的计算机很近,当加载Word实例的时候您将看到硬盘指示灯会短暂地亮一下。WordDocument的Content特性代表了所有文档的内容;text特性是显示在文档体上的实际文本。SaveAs方法必须有一个OleVariant类型的变量。确保正确的路径。最后断开与Word文档的连接。TWordDocument是TOleServer的子孙类。在上面的程序段中,只从TOleServer继承了Connect和Disconnect两个方法。Content特性和SaveAs方法是由TWordDocument组件引入的方法。请参考表12.2所示TOleServer的方法。

提示:leading_in接口方法(如_AddRef方法)被自动加入,以使它们与其他的方法区别开。在一般情况下没有必要调用这些方法。

每一个继承TOleServer的类都具有表12.1和表12.2中列出的特性和方法。所有在组件面板的Server属性页上的自动化服务器在它们的直接祖先中有TComponent和TOleServer。

表12.2  TOleServer的方法:MSOffice自动化服务器继承了这些方法

方法

说明

_AddRef

保护方法,用于增加引用服务器对象的引用计数

_Release

减少引用计数的保护方法,如果引用计数等于0,那么对象将从内存中被释放

Connect

虚抽象方法,子孙类使用这个方法连接到服务器,如果ConnectKind设置为ckAttachToInterface,那么子孙类将使用ConnectTo方法实现

ConnectEvents

保护方法,用于在内部实现COM事件处理程序

Create

构造一服务器类的实例

Destroy

解除一服务器类的实例

Disconnnect

虚抽象方法,子孙类用于终止与服务器的连接

DisconnectEvents

终止由ConnectEvents方法创建的连接

GetAutoConnect

保护方法,用于读取AutoConnect特性

GetConnectKind

保护方法,用于读取ConnectKind特性

GetServer

保护方法,返回与服务器的一个接口

InitServerData

保护方法,用于初始化ServerData特性

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值