转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> Delphi程序 >> 正文
一个实际的OLE服务器的开发和使用         ★★★★

一个实际的OLE服务器的开发和使用

作者:闵涛 文章来源:闵涛的学习笔记 点击数:2013 更新时间:2009/4/23 18:35:42

一个实际的OLE服务器的开发和使用

先行知识:Delphi /COM/OLE Automation/ SQL Server

难度:★★☆☆☆

 

在前几篇文章中我们已经讨论过关于VCLOLE的知识。在这篇文章中我们将完成一个比较有实际意义的OLE Automation服务器程序,最后我们把他们封装为Delphi中使用的VCL组件。

首先我们来做一个实际的程序,在它没有变为服务器之前,这是个用来管理客户购买记录的程序(它自己与SQL Server连接),它可以录入和删除客户的购买记录并直观的显示出来,所有的数据都存放在SQL Server中。我们将它做为OLE Automation出于这样一种考虑,假设我们是一家大型的供货公司,我们可能有很多系统需要使用这个客户购买记录程序并用它处理SQL Server中相应的数据,但我们不愿意每次都重复的编写同样的处理代码,我们更希望能把这个处理程序独立出来,并向其它程序提供服务。那么在下面的工作中我们完成了这个服务器程序,界面如下:(注意,这仅仅是一个例子,我们不评价其数据库设计的好坏J)

我们不过多的讨论这个程序的代码(因为这和开发一般的程序没有任何不同,你可以按照最后的地址给我来信索取这篇文章的全部代码)。然后我们来把它变为一个服务器。选择FileàNewàOthersàActiveXàAutomation Object。接下来delphi为我们定义了类型库和实现文件,我们要做的只是在类型库中添加相应的我们要用到的服务器属性和事件。我们简单的给出定义这个OLE Automation功能的接口(来自类型库所产生的Object Pascal代码):

  ICustFormOLE = interface(IDispatch)

    [''''{D7AE75F9-F838-4702-A8EB-EAD0EED242DE}'''']

    function Get_CustName: WideString; safecall;

    procedure Set_CustName(const Value: WideString); safecall;

    function Get_ProductName: WideString; safecall;

    procedure Set_ProductName(const Value: WideString); safecall;

    function Get_ProductNum: Integer; safecall;

    procedure Set_ProductNum(Value: Integer); safecall;

    function Get_Remark: WideString; safecall;

    procedure Set_Remark(const Value: WideString); safecall;

    //下面的方法和属性都对应着原程序中相应的方法和属性

    procedure AddToData; safecall;

    procedure DelData; safecall;

    property CustName: WideString read Get_CustName write Set_CustName;

    property ProductName: WideString read Get_ProductName write Set_ProductName;

    property ProductNum: Integer read Get_ProductNum write Set_ProductNum;

    property Remark: WideString read Get_Remark write Set_Remark;

  end;

 

  ICustFormOLEDisp = dispinterface

    [''''{D7AE75F9-F838-4702-A8EB-EAD0EED242DE}'''']

    property CustName: WideString dispid 201;

    property ProductName: WideString dispid 202;

    property ProductNum: Integer dispid 203;

    property Remark: WideString dispid 204;

    procedure AddToData; dispid 205;

    procedure DelData; dispid 206;

  end;

我们现在回到接口的实现文件,注意代码中的注释,事实上这段代码相当的简单:

unit CustOLEImpUnit;

 

{$WARN SYMBOL_PLATFORM OFF}

 

interface

 

uses

  ComObj, ActiveX, CustViewOLE_TLB, StdVcl,windows;

 

type

  TCustFormOLE = class(TAutoObject, ICustFormOLE)

//注意这里实现了我们在前面定义的ICustFormOLE接口

[1] [2] [3]  下一页


没有相关教程
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台