DataSet属性是DataSource组件必须设置的属性,它指定DataSource组件连接的数据集组件。若DataSource组件在所有数据集组件之前放置,则该属性值只能从对象检查器属性值栏的编辑框输入;若放置DataSource组件之前已放置了数据集组件,则该属性值可从其下拉列表中选择。
2.AutoEdit属性
AutoEdit属性决定与DataSource组件连接的数据集组件是否处于自动编辑状态。该属性为布尔型属性,若其值为True,则与DataSource组件连接的数据控制组件对数据的修改会自动反映到数据表中;反之,则不能。其默认值为False。
3.Enable属性
Enable属性可以暂时地切断DataSource组件与相连的数据集组件的连接。该属性为布尔型属性,若其值为False,连接被切断。其默认值为True。
12.2.3数据控制组件
数据控制组件主要用于设计数据库应用程序用户界面,通过DataSource组件与DataSet组件相连接,对数据库中的数据进行浏览、编辑。
数据控制组件共有15个,位于组件模板的【DataControl】选项卡中,都是可视组件。
这些组件中的大部分同【Standard】选项卡中的一些组件功能、使用方法类似,只是增加了数据控制功能。
这些数据控制组件中,DBGrid组件和DBNavigator组件用DataSource属性同DataSource组件相链接,而其余13个组件都用DataSource属性和DataField属性同数据库相链接,DataSource属性用于指定组件链接的DataSource组件,DataField属性用于指定组件链接的数据表字段。在后面的介绍中,相同的属性就不再重复讲述。
1.DBGrid组件
DBGrid组件用网格的形式显示数据表中的数据,其每一行是一个数据记录,每一列是一个字段。
刚放置到窗体上的DBGrid组件如图12-8所示。
如用户数据库gongsi(公司),内建数据表zhiyuan(职员),该表有“姓名”、“性别”、“年龄”、“工龄”和“工资”5个字段。窗体中有Query1、DataSource1和DBGrid1共3个组件,Query1的DatabaseName属性为gongsi,SQL属性为:Selectfromzhiyuan,Active属性为True;DataSource1的DataSet属性为Query1;DBGrid1的DataSource属性为DataSource1,Options属性根据需要设置,设置完成后,DBGrid1显示如图12-9所示。
1)DBGrid组件的属性
(1)DataSource属性
DataSource属性指定与该DBGrid组件链接的DataSource组件。该属性可以在对象检查图12-9显示zhiyuan数据表内容的DBGrid组件器属性值栏的编辑框中直接输入;若在设置DBGrid组件的属性之前,窗体上已放置了需要的DataSource组件,该属性也可以从对象检查器属性值栏的下拉列表中选择。
(2)Columns属性
Columns属性决定DBGrid组件网格列项的特性,包括网格的列数、网格列的背景颜色及显示的文字的特性、网格列标题的特性及背景颜色等。
设置DBGrid组件的Columns属性,激活DBGrid组件,然后单击其Columns属性值栏右端的【…】按钮或直接双击DBGrid组件,弹出【EditingDBGrid1.Columns】(这里DBGrid组件的名称设为DBGrid1)对话框,如图12-10所示。
对话框有4个工具按钮,其中【AddNew(Ins)】、【DeleteSelected(Del)】和【AddAllFields】
常用,分别用来向显示网格中添加列项、删除列项、添加数据表中的所有字段作为列项。若设置该属性前,数据集组件、DataSource组件及DBGrid组件的其他属性已设置完毕,则单击【AddAllFields】按钮,这时数据集组件链接的数据表的所有字段显示在对话框的编辑区中,如图12-11所示;若需要对显示的列项进行调整,可再用【AddNew(Ins)】、【DeleteSelected(Del)】按钮加以增、删。
列项确定后,选择某一列项,对象检查器窗口显示该列项的属性设置窗口,可根据需要设置该列项的属性。其中重要的属性有:
①DropDownRows属性和PickList属性。PickList属性决定该列项是否有下拉列表及下拉列表的内容,DropDownRows属性决定该列项下拉列表的默认行数。单击PickList属性值栏右端的【…】按钮,弹出【StringListEditor】对话框,如图12-12所示,若不输入字符串,则该列项没有下拉列表;若输入若干行字符串,则可有若干行下拉列表,完成后单击【OK】
按钮即可。
②FieldName属性。它决定该列项中显示的数据表的字段。通常用于改变列项默认显示数据表字段。
③Color属性和Font属性决定该列项的背景颜色及列项中文字的字体属性。
④Title属性用于设置列项的标题特性。该属性为集合型属性,包含4个子属性:Alignment(对齐方式)、Color(标题背景颜色)、Caption(标题内容)和Font(标题字体)。
将各列项的属性设置完毕,单击对话框右上角的“关闭”按钮,关闭图12-12所示的【EditingDBGrid1.Columns】对话框。
(3)Fields属性
Fields属性包含DBGrid组件网格被选行中各个列项的内容。该属性为只读属性,用于通过网格读取数据表的内容,如:Edit1.Text:=DBGrid1.Fields[n].AsString;其中n为列项在行中的序号,起始为0。
(4)Options属性
Options属性决定DBGrid组件网格的外观和行为。该属性为集合型属性,包含13个子属性,均为布尔型属性,各子属性值为True时的含义如表12-1所示。
(5)SelectedField属性
SelectedField属性包含DBGrid组件网格被选列项的内容。该属性为只读属性,用于通过网格读取数据表的内容,如:Edit1.Text:=DBGrid1.SelectedField.AsString;2)DBGrid组件的事件
DBGrid组件有很多事件,其中常用的事件有以下几个。
(1)OnCellClick事件
单击DBGrid组件某一单元格时触发该事件。
(2)OnColEnter事件
当输入焦点转移到DBGrid组件的某一列项时触发该事件。
(3)OnColExit事件
当DBGrid组件的某一列项失去输入焦点时触发该事件。
(4)OnTitleClick事件
单击DBGrid组件某列项标题时触发该事件。
2.DBNavigator组件
DBNavigator组件用来移动数据表的当前记录指针,并可对数据表进行插入、删除、修改等操作。放在窗体上的DBNavigator组件如图12-13所示。
1)DBNavigator组件的按钮功能由此可见,通过DBNavigator组件的这些按钮,就可以很方便地对数据表中的数据进行操作。
2)DBNavigator组件的属性
(1)VisibleButtons属性
VisibleButtons属性决定DBNavigator组件各个功能按钮的可见性。该属性为集合属性,包含10个布尔型子属性:nbFirst、nbPrior、nbNext、nbLast、nbInsert、nbDelete、nbEdit、nbPost、nbCancel、nbRefresh,分别对应组件中的10个按钮,若某一子属性值为True,则对应的按钮可见;若某一子属性值为False,则对应的按钮不可见。其默认值均为True。根据实际需要,若不使用某个按钮,则可让该按钮不可见。
(2)Hints属性
Hints属性决定DBNavigator组件各个按钮的功能提示信息。DBNavigator组件的各个按钮,都有缺省的功能提示信息,单击Hints属性值栏右端的【…】按钮,弹出【StringListEditor】对话框,如图12-14所示,编辑区中的10行字符串,按顺序每一行有一个按钮的功能提示信息。用户可以不用缺省的提示信息,在对话框中另行设置,完成后单击【OK】
按钮即可。
(3)ShowHint属性
ShowHint属性决定DBNavigator组件是否显示按钮的功能提示信息。该属性为布尔型属性,若其属性值为True,则显示功能提示信息;否则,不显示。其默认值为False。
3.DBText组件
DBText组件以只读方式、用类似Lable组件的外观来显示数据表中当前记录的一个字段。
该组件除了要用DataSource属性指定组件链接的DataSource组件外,还要用DataField属性指定组件显示的字段。该属性值可以直接从对象检查器属性值栏编辑框中输入;若设置该属性值之前已设置了DataSource属性,也可以从其下拉列表中选择。该组件的其他属性类似于Lable组件。
4.DBEdit组件
DBEdit组件用来显示、编辑数据表中当前记录的一个字段,其功能和使用方法类似于Edit组件。
如前所述,使用该组件要用DataSource属性指定组件链接的DataSource组件,用DataField属性指定组件显示的字段。
如图12-9所示简例,窗体添加DBEdit1组件,设置其DataSource属性为DataSource1,DataField属性选择为“工资”字段,则DBEdit1显示当前记录“工资”字段的内容。
5.DBMemo组件
DBMemo组件用来显示、编辑数据表中当前记录一个大文本字段,其功能和使用方法类似于Memo组件。
6.DBImage组件
DBImage组件用来显示数据表中位图格式的字段,其功能和使用方法类似于Image组件。
7.DBListBox组件、DBComboBox组件和DBCheckBox组件这3个组件的使用同ListBox组件、ComboBox组件和CheckBox组件类似,只是同前面介绍的组件一样,要同数据表的字段相联系。
12.3数据库应用程序开发步骤
开发Delphi数据库应用程序,一般需要如下步骤:
(1)建数据库,包括选择数据库类型、创建用户数据库和数据表、向数据表中输入数据;(2)配置ODBC;
(3)设置BDE参数;
(4)设计应用程序界面;
(5)编写程序代码;
(6)运行、调试程序。
下面将具体介绍数据库应用程序设计的各个步骤。
12.3.1创建数据库
开发Delphi数据库应用程序,首先要创建数据库。
创建数据库包括选择数据库管理系统的类型、在选定的数据库管理系统中创建自己的数据库和数据表、向数据表中输入必要的数据。
数据库管理系统的选择,要考虑数据量的规模、应用环境、开发成本等诸多因素。
数据库和数据表的创建及数据的输入,各数据库管理系统都提供各自的方法。
数据库的创建,不属于本书的内容范围,读者根据选用的数据库类型参阅相关的书籍。
除了使用选定数据库管理系统提供的创建数据表、输入数据表数据的手段外,用户也可以使用Delphi提供的数据库管理工具DatabaseDesktop(数据库桌面)创建数据表、输入数据表数据。
1.使用DatabaseDesktop创建数据表
使用DatabaseDesktop创建数据表的步骤如下。
(1)执行【开始】→【程序】→【BorlandDelphi6】→【DatabaseDesktop】系统菜单命令,或在Delphi集成开发环境中执行【Tools】→【DatabaseDesktop】菜单命令,启动【DatabaseDesktop】,如图12-15所示。
(2)执行窗口中的【File】→【New】→【Table】菜单命令,打开【CreateTable】对话框,如图12-16所示。
(3)在【Tabletype】下拉列表中选择使用的数据库类型,这里选择Paradox7,然后单击【OK】按钮,关闭【CreateTable】对话框,打开【CreateParadox7Table(Untitled)】对话框,如图12-17所示。
(4)对话框的【Fieldroster】编辑区列出了创建的数据表字段的FieldName(字段名称)、Type(字段数据类型)、Size(字段尺寸)和Key(是否为关键字段)几个区域,供用户设定数据表的结构。
在第一个字段的FieldName栏,输入第一个字段的名称;右击第一个字段的Type栏,弹出快捷菜单,选择第一个字段的数据类型;根据需要,在Size栏确定第一个字段的尺寸,需要注意的是,有些数据类型具有默认的尺寸,不需要另行设定;最后确定第一个字段是否为关键字段,若确定为是,双击Key栏,显示“”,则为关键字段,再双击Key栏,“”消失,则不为关键字段。第一个字段设置完毕,按回车键,高亮条停在第二个字段的FieldName栏处,按如上方法设置第二个字段,…,直到所有字段设置完毕。建立了数据表的【CreateParadox7Table(Untitled)】对话框如图12-18所示。
图12-18创建了数据表的【CreateParadox7Table(Untitled)】对话框若建立的数据表的字段名为汉字,直接在高亮条状态下输入汉字会显示乱码,必须用鼠标单击高亮条,使之变成光标形状再输入汉字。后面向数据表输入的数据为汉字时也有这样的问题。