知识大全 Delphi深度探索-数据库明了的ActiveX控件

Posted 属性

篇首语:读书是易事,思索是难事,但两者缺一,便全无用处。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Delphi深度探索-数据库明了的ActiveX控件相关的知识,希望对你有一定的参考价值。

Delphi深度探索-数据库明了的ActiveX控件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

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

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

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

  

  图

  新建一个程序 在窗体上放置一个TAXCalendar控件 再放上一个DataSource 和Table控件 设定DataSource的Dataset为Table 然后设定Table 的DataBaseName 属性为DBDEMOS TableName 属性为EMPLOYEE DB 最后设定Table Active属性为True

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

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

  

  图

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

  

  图

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

  

  图

  创建数据明了的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框架

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

  

  图

  注意在Flags属性页有很多多选框 对于我们来说 只关心同数据绑定相关的选项 它们是Bindable Display Bindable Default Bindable Immediate Bindable和Request Edit选项

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

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

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

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

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

  Immediate Bindable当被标记时 所有的改变都会被通知 同时还需要设定bindable和Request Edit标记

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

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

  

cha138/Article/program/Delphi/201311/24662

相关参考

知识大全 Delphi深度探索之使用Bold开发数据库应用(2)

Delphi深度探索之使用Bold开发数据库应用(2)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧

知识大全 Delphi深度探索之使用Bold开发数据库应用(3)

Delphi深度探索之使用Bold开发数据库应用(3)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧

知识大全 Delphi深度探索-CodeSite应用指南

Delphi深度探索-CodeSite应用指南  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  D

知识大全 Delphi深度探索之自动完成外壳扩展

Delphi深度探索之自动完成外壳扩展  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &

知识大全 Delphi深度探索之PItemIDList的基本概念

Delphi深度探索之PItemIDList的基本概念  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧

知识大全 Delphi深度探索之外壳执行操作记录器

Delphi深度探索之外壳执行操作记录器  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!记录外壳的活

门捷列夫说一个人要发现卓有成效的真理,需要千百万个人在失败的探索和悲剧的错误中毁掉自己的生命。”这句话说明了__

门捷列夫说一个人要发现卓有成效的真理,需要千百万个人在失败的探索和悲剧的错误中毁掉自己的生命。”这句话说明了_____。A、真理是主观和客观相符合的哲学范畴,所以和谬误相对立B、真理和谬误是相互等同、

知识大全 Delphi数据库的动态建立

Delphi数据库的动态建立  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  delphi最吸引人

知识大全 利用Delphi开发网络数据库应用

利用Delphi开发网络数据库应用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Delphi是

知识大全 Delphi开发数据库应用程序概述(一)[2]

DELPHI基础教程:Delphi开发数据库应用程序概述(一)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快