Delphi 6应用开发指南 附录C 将程序转变为自动化服务器.pdfVIP

Delphi 6应用开发指南 附录C 将程序转变为自动化服务器.pdf

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
附录C 将程序转变为自动化服务器 自动化是COM 的一个方面,您可以利用它从程序中获得额外的收益。本附录示范了一些基本的步骤 来选取一个程序(这里是第19 章的SQLBuilder),然后向工程添加自动化对象,将程序转换为自动化服务 器。之所以选择SQLBuilder,是因为自动化客户可利用SQLBuilder 服务器来针对任何数据集生成SQL。 请记住,在运行自动化服务器之前,还需要有自动化客户,即任何请求创建COM 对象实例的程序。 可创建COM 对象实例的工具非常多,包括报表工具、VBA (大部分在Microsoft Office 中),以及大部分 的Wintel 编程语言。 C.1 向工程添加自动化对象 这里不再涉及第19 章的SQLBuilder 程序的细节,该工程的源代码和编译后的版本都在本书的光盘上。 该程序使用了TSession 类型的全局变量来从ODBC 和BDE 注册文件获取数据库名字的列表。当用户选定 某个数据库名时,将以同样的方式获取该数据库中可用的表名。用户选取一个表时,将从 TDataSet.Fields 集合读入字段定义并显示在TValueListEditor 对象中,该对象是网格形状的、基于TStrings 的控件。在字段 值已知的情况下,可利用Format 函数对定义了参数的SQL 语句进行简单的字符串替换。就是这样。 如果您已经读过本书前面的部分,那么您已经掌握了这些技巧,因此我们不再涉及SQLBuilder 工程的 更多细节。从这里开始,我们将进行一些必要的步骤,向该工程添加自动化对象。 C.1.1 使用自动化对象向导 现在打开原来的SQLBuilder 工程,开始向它添加自动化对象。打开工程后,在Delphi 中单击File | New | Other 菜单项。然后在New Items 对话框中选择ActiveX 属性页,并选择其中的Automation Object 图标(如 图C.1 所示)。这里使用的CoClass 名为Builder ,并采用了缺省的实例化和线程模型(关于实例化和线程 模型的特定细节,请参考第 15 章)。单击OK 生成类型库并触发类型库编辑器。 我们将使用类型库编辑器来定义自动化服务器的接口,并更新类型库和包含TBuilder 类的Pascal 源文 件,该类是服务器的包裹类。 C.1.2 在类型库编辑器中定义接口 在向导中单击OK 后,将定义一个包裹类,该类继承了TAutoObject 类,并实现了IBuilder 接口。在 光盘上,相应的文件名是UBuilder.pas 。当结束自动化接口定义后,类型库编辑器(见图C.2 )中的Refresh 按钮将把声明和定义添加到Pascal 包裹类的单元。 附录C 将程序转变为自动化服务器 540 图C.1 自动化对象向导小应用程序 图C.2 类型库编辑器以及TBuilder 类的定义 对于该自动化对象,我们将定义一些方法和特性,以便设置数据库名和表名,获取数据库名和表名的 列表,以及字段和SQL 文本的管理等。按下列步骤,可以在类型库编辑器中定义接口。 1. 在类型库编辑器中,单击New Property 工具栏按钮(或右键单击IBuilder 接口,从接口的上下文 菜单中选择该菜单项,参考图C.2 )添加DatabaseName 特性。 2. 在Attributes 属性页上(在图C.2 中也可以看到),将Name 修改为DatabaseName ,将类型修改为 BSTR ,对读写定义二者都进行同样的修改。 3. 对TableName 特性重复步骤2 。这两个特性将用于修改选定的数据库名和表名。 4. 添加两个方法(单击 Methods 工具栏按钮),将其命名为GetTableNames 和 GetDatabaseNames 。 TStrings 对象可返回分隔好的文本,因此我们可以利用TStrings 的Text 特性将所有的列表项作为 一个字符串传递。 5. 在Parameters 属性页上将Type 设置为BSTR* ,这是指向BSTR ,即宽字符串的指针,并将Modifier

您可能关注的文档

文档评论(0)

tcpe + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档