Delphi作为一种目前十分流行的数据库开发语言在数据库开发领域有着十分重要的地位它不仅提供了可视化的开发环境使得开发变得相对容易而且还是一种面向对象的语言 使得程序员能够充分利用面向对象编程的种种优势——如封装继承等等从而大大减轻了开发的难度和工作量下面我们就谈一谈利用面向对象的特性来开发数据库控件的方法
Delphi本身提供了一些数据库控件如DBGridTable等它们给开发带来了很多方便下面我们来以一个能够显示数据表中的所有字段的控件为例来说明如何用Delphi来进行控件的编程
首先要为控件选择一个合适的父类Windows的一个好处就在于它将许多操作标准化了通过这些标准的操作使得学习和使用都有章可循用户就很容 易融会贯通地掌握整个系统在Delphi中提供了许多控件这些控件生成的应用程序足以满足Windows编程的要求而一些新的控件也可以在此基础上 产生它一方面继承了一部分控件标准的操作另一方面也在程序中加入一些代码来实现特定的功能这样用户使用起来不会觉得突兀也简化了程序的开发根据 我们的目标可以看出利用下拉框控件作为新控件的父类比较合适因为它提供了下拉框中的所有标准操作这就可以大大减少我们的编程量然后就是为 特定的功能编写代码我们应该想到如果一个下拉框能够显示一个数据库中的所有字段那么它一定有一个属性能够与数据库相连我们将这个属性定名为 DataSource并将这一属性添加到控件中添加的方法是首先在Private段中加入如下代码
FDataLink:TFieldDataLink;
function GetDataSource:TDataSource;
Procedure SetDataSource( Value:TDataSource);
其中TfieldDataLink是一个十分重要的类我们之所以能够很容易地进行数据库控件的开发全是拜它之赐它有一些十分有用的属性如DataSource利用这个属性我们就能很容易地指定新控件的DataSource属性
第三步就是为控件的功能编写代码可以想到如果我们想要在拉下下拉框时显示数据库中的所有字段就要在它的DropDown事件中加入代码来将所有 的字段加入到下拉框的下拉区域中这应该分两步走第一就是要取得指定数据库的所有字段第二就是将这些字段以字符串的格式加入到下拉框中(而拉下时显示 所有字段的功能则由下拉框控件自己完成)在取得数据库的字段时用到了我们上面提到的TfieldDataLink类下面的代码就可以获得指定数据库 的字段数目
j:=
;
j:=FDataLinkDataSourceDataSet FieldCount ;//取得数据库中的所有字段的名字
I:=;
然后再用下面的代码将这些字段的名字加入到下拉框的items属性中值得注意的是在每次拉下这个下拉框时都要将items属性清空否则这个下拉框将每次都会因加入重复的内容而变得越来越长并且一次选择可以选定许多项使得控件看起来有点怪
itemsClear ; //清空items属性
repeat //循环操作将字段加入下拉框中
itemsAdd (FDataLinkDataSetFields[I]FieldName ); //将字段名加入到下拉框中
I:=I+;
until I>j-; //直到所有的字段加入完为止
第四步就是将以上代码加入到Delphi的控件编辑窗口中去点击Delphi的Component/New Component菜单系统出现一个对话框将对话框如图所示填写
填写完毕点击OK按钮就可以创建一个文件将上面提供的代码加入到文件的适当位置就可以完成这个控件的编写图是带有这个控件的程序的例子
可以想见这个控件有着十分广泛的功能例如我们能够利用它设置指定字段的值来运行查询也可以返回数据库中指定字段的数据类型长度等信息给我们的编程提供了极大的方便
但是也应该看到这个控件也有一些缺点那就是它只能显示字段的名称一般的数据库中字段的名称都是英文的这给中文版的应用软件带来不便下面我们 就用FdataLink的另一个属性来显示中文化的字段这个属性就是DisplayName它所指定的是数据库字段的显示名称而这个名称我们可以在 设计时将其汉化这样在应用程序中显示出来的就是有意义的中文了
[] [] []