My FAQ,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > Delphi > COM/ActiveX
Delphi深度探索-数据库明了的ActiveX控件
作者:hubdog 时间:2001-11-01 10:39 出处:互联网 责编:MyFAQ
              摘要:Delphi深度探索-数据库明了的ActiveX控件

Delphi深度探索-数据库明了的ActiveX控件

    强大的数据库开发功能无疑是Delphi王冠上的明珠,至少有80%以上的人每天使用Delphi来开发数据库程序。基于积木式的VCL数据库控件,以及Dev ExpressWoll2Woll等公司提供的强大的第三方数据库明了控件,毫不夸张的说只需要简单的设置一下属性,拖拉几下鼠标我们就可以非常快速的完成数据库程序的开发。由于Delphi的数据库功能过于强大了,所以很多人就忽视了一个事实,就是ActiveX同样可以提供灵活的数据库绑定,遗憾的是Delphi本身所提供的几个第三方的ActiveX控件中没有一个是数据库明了的控件,这间接导致了一个误解,使得很多人误以为Delphi并不支持数据明了的ActiveX控件(也包括很久以前的我J)。这当然是错误的看法。

    Delphi中使用数据明了的ActiveX控件

    在下面的例子中,我们将使用随Office 2000安装到系统中的Microsoft Calendar 9.0控件来进行演示,它就是一个数据明了控件。选择Component | Import ActiveX Control,选择Microsoft Calendar 9.0(见下图1.12),把类名从TCalendar改成TAXCalendar,以避免同系统中原有的同名控件冲突,然后点Install按钮安装此控件。

1.12

 

 

 

 

 

 

 

 

 

 

 

 

 


    新建一个程序,在窗体上放置一个TAXCalendar控件。再放上一个DataSource Table控件。设定DataSourceDatasetTable1,然后设定Table1DataBaseName 属性为DBDEMOSTableName 属性为EMPLOYEE.DB,最后设定Table1.Active属性为True

    接下来就该进行数据库绑定了,注意一下引入的TAXCalendar具有DataSourceDataBindings这两个同一般ActiveX控件不同的属性,这是因为ActiveX Import Wizard在引入ActiveX控件先判断是否是数据库明了的控件,如果是就以TDBOleControl作为基类进行继承,如果不是就从TOleControl开始继承。而TDBOleControl实现了DataBindingsDataSource属性。设定AXCalendar1.DataSource属性为Datasource1

    这时我们在窗体上用鼠标右键单击TAXCalendar控件的话,会发现在右键菜单中多出了一个DataBindings…菜单项(见下图1.13)。

 

1.13

 

 

 

 

 

 

 

 

 

 


    点击菜单项后,会显示数据绑定属性编辑框(见下图1.14)。分别在FieldName列表框中选定HireDate,在Property Name列表框中选择Value(12)(其中12ValueDispid号),点击Bind按钮,就会在数据库字段和Value属性间建立数据关联。

1.14

 

 

 

 

 

 

 

 

 

 

 

 


    最后,再在窗体上放置一个DBGridDBNavigator控件,并设定它们的DataSourceDataSource1。运行程序,移动当前数据位置的时候,你可以注意到ActiveX的日期显示也会随之变化,同数据库中的Hiredate保持一致。如图1.15所示:

1.15

 

 

 

 

 

 

 

 

 

 

 

 

 


    创建数据明了的ActiveX控件

虽然我们已经清楚了Delphi的确可以使用数据明了的ActiveX控件,那么一个新的问题就产生了,Delphi本身可不可以创建数据明了的ActiveX控件呢?由于Delphi提供了一步到位的ActiveX控件转换生成,就有很多人希望能够把Delphi中强大的数据库控件转换为ActiveX控件,以便能在其他支持ActiveX的开发环境开发数据库程序时仍然能够享受到象在Delphi中一样的轻松愉快的感觉。但是我在前面第一部分中已经提到了,由于Delphi的数据明了控件同ActiveX数据库控件的在内部机制上差距过大,因此Delphi无法简单的直接转换其强大的数据库控件。那么是不是就意味我们就没有办法了呢?of course not! 其实使用类型库编辑器,我们可以异常轻松的实现数据明了的ActiveX控件,就让我们用TEdit控件来试验一下,看看如何去做。

选菜单命令New | ActiveX | ActiveX Control启动ActiveX Control Convert Wizard,选TEdit控件作为转化对象,生成EditX ActiveX框架。

    接下来,我们将改造TEditText属性,使其支持数据绑定。选 View | Type Library来察看Delphi生成的类型库,并选中Text属性,然后切换到Flags属性页(见下图1.16)。

 

1.16

 

 

 

 

 

 

 

 

 

 

 


    注意在Flags属性页有很多多选框,对于我们来说,只关心同数据绑定相关的选项。它们是BindableDisplay BindableDefault BindableImmediate BindableRequest Edit选项。

    标记一个属性为bindable后,并将其同数据库字段绑定后,当用户修改了属性后,控件就会通知数据库值已经变化,并请求数据库记录更新状况,数据库反过来也会通知记录更新是否成功。

    Bindable选项表明属性支持数据绑定,如果把属性标记为bindable,属性将在其值变化时通知其容器。

    Request Edit表明属性支持OnRequestEdit 通知消息,这允许控件询问容器属性值是否允许用户修改。

    Display Bindable表示容器可以向用户显示这个属性是可绑定的。

    Default Bindable表示它是唯一的,缺省的可绑定属性,使用它必须同时标记了Bindable属性。

    Immediate Bindable当被标记时,所有的改变都会被通知,同时还需要设定bindableRequest Edit标记。

    下面我们就标记EditX控件的Text属性为BindableDisplay BindableDefault Bindable,和Request Edit。然后点Refresh按钮刷新类型库,最后选Run | Register ActiveX Server注册ActiveX控件。

    再引入新的EditX ActiveX控件,就会发现它确实实现了数据绑定的功能,下面就是一个使用了数据明了的EditX的程序的运行示意图1.17(DelphiActiveX数据明了功能的实现的确简单很COOL,不是吗?。

 

 

 

1.17

 

 

 

 

 

 

 

 

 

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 myfaq.com.cn All rights reserved. www.myfaq.com.cn 版权所有