登陆注册
36209800000029

第29章 数据库应用程序设计(3)

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)】对话框若建立的数据表的字段名为汉字,直接在高亮条状态下输入汉字会显示乱码,必须用鼠标单击高亮条,使之变成光标形状再输入汉字。后面向数据表输入的数据为汉字时也有这样的问题。

同类推荐
  • 学校计算机实用技术

    学校计算机实用技术

    本书由杭州市上城区教育学院编著,他们邀请了众多信息技术教育教学的一线专家,认真细致地筛选了学校计算机应用方面的常见问题,提出了解决问题的具体操作方案,旨在帮助一线教育工作者解决可能面临的种种问题,为广大教师提供便捷服务。
  • 计算机网络技术与应用

    计算机网络技术与应用

    本书共8章,系统地介绍了计算机网络的发展和基本原理体系结构、局域网、广域网、网络服务、网络安全、典型网络的结构特点等内容。除第8章外,其他各章都附有练习题。为了加强学习效果,本书围绕知识点的典型性,精选了6个实验。此外,在本书的第8章,我们综合各章知识设计了“办公局域网组建设计”和“中小型企业局域网组建设计”这两个常用的计算机网络技术应用实例,供学生学习和参考。本教材适合作为本科非计算机专业学生的计算机网络教材。
  • 中国移动智能手机的秘密

    中国移动智能手机的秘密

    《中国移动智能手机的秘密》是一本关于移动终端和移动互联网的科普书。作者将这18年通信行业中的学习、思考、实践积累成《中国移动智能手机的秘密》与大家分享。书本系统总结了手机的发展历史、TD产业界“从2G向3G演进”的移动终端产业分化重组进程、智能手机的使用方法用方法和应用指南,以及对移动互联网发展独特思考。
  • 初级会计电算化

    初级会计电算化

    本书是作者根据历年会计从业资格考试的考试大纲以及多年对真题的分析,并结合多为专家、学者的实践经验而编写的。本书主要分为八套模拟试卷,以对考生考前的学习进行模拟实战,达到提高考生成绩的目的。
热门推荐
  • 天行

    天行

    号称“北辰骑神”的天才玩家以自创的“牧马冲锋流”战术击败了国服第一弓手北冥雪,被誉为天纵战榜第一骑士的他,却受到小人排挤,最终离开了效力已久的银狐俱乐部。是沉沦,还是再次崛起?恰逢其时,月恒集团第四款游戏“天行”正式上线,虚拟世界再起风云!
  • 本是楚狂人

    本是楚狂人

    “我追了你三生三世,你躲了我三生三世。可你又怎知我等了你十世,轮回了千年。最终沦为你窗前的一枝彼岸,也无怨无悔,至少我曾经拥有过。”男女主千年虐恋,究竟是劫还是缘。
  • 第一总裁夫人:vip情人

    第一总裁夫人:vip情人

    “不过是暖床工具罢了!”她被人当成礼物送入豪门,新婚夜新郎却在别的女人怀中,甚至让她这个新婚妻子近身伺候!她卑微的放下身段,从高傲的富家千金变成逆来顺受,委曲求全的低贱女佣,得到的却是赶出家门,被人绑架,清白被夺!
  • 送刘禹锡侍御出刺连

    送刘禹锡侍御出刺连

    本书为公版书,为不受著作权法限制的作家、艺术家及其它人士发布的作品,供广大读者阅读交流。
  • 神级古董商

    神级古董商

    远离城市喧嚣的僻静小巷里,陈希经营着一家叫做“四海堂”的古董店。原本濒临破产的古董店,在他接手后,逐渐变得红火起来。一件件稀奇古怪的古董从四海堂流出,牵扯出一段段看似荒诞不经但却充满人情的往事。“四海堂的买卖从来不以挣钱为目的。”“那为了什么?”“探寻历史的真相或者替别人答疑解惑不比挣钱有趣多了吗。”当拥有四海堂老板、易宝网首席鉴宝师、蓟州大学历史系名誉教授……等一系列头衔的陈希说出这句话来的时候,大家不仅不觉得他在装X,反而觉得说的很有道理。......书友群:1056986454
  • 无能者的高能冒险

    无能者的高能冒险

    总之,这是一群低能力高行动力的人勇于作死的故事,只不过因为强运每次都能逃出生天罢了。
  • 我的师尊是三霄

    我的师尊是三霄

    黄天穿越洪荒封神世界,拜师三霄,成为截教外门弟子,开局融合世界树!从一颗种子开始不断进化,先天灵气,仙道法则,先天灵宝,鸿蒙紫气,先天神圣,混沌魔神,天道法则,亿万种族生灵在世界树上不断诞生。日月星辰,恒沙世界,小千世界,中千世界,大千世界,混沌世界,最后化为不朽鸿蒙!
  • 聋女情深:逆天大小姐

    聋女情深:逆天大小姐

    简介:她因为在现代爆炸而穿越到了一个历史上从未记录过的朝代。穿越过来后她发现她成了一个六岁的小女孩,这是个以幻气为武的时代,神宠,幻器,空间,神丹药草等为准。她是个爹不疼,生母生她难产而死,庶母将她母亲难产从母体带来的毒传到了她身上,硬生生将她毒聋了一只耳朵,另只耳朵命大保住了。庶妹对她很嫉妒只因她还活着而且她还是嫡女,狠毒的庶妹一直骂她是没娘养的,还一直暗地里对她拳打脚踢,所以她没有一天不在受伤,吃了药也没用,旧伤好了又添新伤。后来霸道腹黑的他出现了,他对她刚开始是对她好奇,却不知这一好奇却是一生,他后来疼她入骨,却不小心伤了他们的爱情结晶,让他苦苦追了她很多年才让她重新接受了他。。。。
  • 九转龙剑传

    九转龙剑传

    手持长剑碎星河,不言败语逆天歌。古来圣贤皆寂寞,万载红尘一场梦。一人一剑,傲视群雄,横扫六合,震踏四方,八荒之王。得至尊血脉,无上传承;杀帝王,斩仙人,无往不利!
  • 爵主圈养小娇妻:老公,求放过

    爵主圈养小娇妻:老公,求放过

    自从凌绵绵遇上了西门即墨,从此凌绵绵就过上了混吃等死的生活,一天有24个小时,有20个小时她都是在床上度过的。某一天,西门即墨抱着凌绵绵躺在床上,摸着凌绵绵的小爪子问到“小绵绵,最近我怎么感觉你瘦了啊?”“这个当然要问你了啊,科学证明xxoo是有助于减肥的,像我这样一天有三分之二的时间都是在床上的,你说我为什么会瘦啊”凌绵绵撇了一眼旁边的西门即墨“嘘,我知道你为什么会瘦了,明天我就去把那个原因给解决了”这时候的凌绵绵是脑子里是一连串的问号啊?要解决啥原因,难道他要把自己给?凌绵绵想想就一阵恶寒,那应该是不可能的事情!“宝贝,春宵一刻值千金,我们就别浪费时间了”