岁数大了,QQ也不闪了,微信也不响了,电话也不来了,但是图老师依旧坚持为大家推荐最精彩的内容,下面为大家精心准备的Delphi 数据浏览部件的应用及编程,希望大家看完后能赶快学习起来。
【 tulaoshi.com - 编程语言 】
数据浏览部件主要用于显示和编辑数据库表中的数据,因而它们又常常被称为数据控制部件或数据明了部件,它们在部件选择板中的DataControls页上,图16.1显示的是DataControls页上的全部数据浏览部件,其中的TDBGrid部件用于全屏幕显示和编辑数据库表中的记录,TDBNavigator用于在数据记录之间导航、插入记录、删除记录、投寄被修改的记录。
图16.1 DataControls部件页上的部件
在表16.1中,我们对DataControls部件上的各个数据浏览部件的一些特性进行描述:
表16.1 各数据浏览部件概述
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
部 件 名 称 特 性 描 述
────────────────────────────────
TDBGrid 用网格的形式显示数据库表中的记录信息,网格中的
各列可以在设计阶段使用字段编辑器创建也可以在运
行过程中用程序设定
────────────────────────────────
TDBNavigator 它提供了一组按钮用于数据库表中的导航,编辑修改、
插入、删除记录以及刷新数据的显示,TDBNavigator中
包含的控制按钮在设计阶段可以进行选择
────────────────────────────────
TDBText 用于显示数据库表中当前记录的字段值
────────────────────────────────
TDBEdit 用于显示和编辑数据库表中当前记录指定的字段值
────────────────────────────────
TDBMemo 用于显示数据库表中的备注型字段,备注型字段中可
以包含多行字符甚至可以是BLOB(大二进制对象)数据
────────────────────────────────
TDBImage 用于显示数据库表中的图像字段和BLOB数据
────────────────────────────────
TDBListBox 当用户编辑修改表中当前记录的某个字段时,该部件
是一个包含多个选择项的列表框,用户可以从中选择
一个项做为字段的值
────────────────────────────────
TDBComboBOx 该部件是一个组合框,当用户编辑修改表中当前记录
的一个指定字段时,可以直接在该部件中输入字段值
也可以单击该部件从下拉式列表框中选择一个字段值
────────────────────────────────
TDBCheck 用于显示数据库中的字段信息的检查框,当表中字段
的值与该检查框的ValueChecked属性值相匹配时,该
检查框被选中
────────────────────────────────
TDBReadioGroup 使用该部件可以为用户提供一组选择项,但用户只能
从中选择一个可选项
────────────────────────────────
TDBLookapList 当用户要编辑修改数据库表当前记录的指定字段时,
使用该部件提供多个可选项,这多个可选项是从相关
的其他表中读取的,且以列表框的形式提供给用户
────────────────────────────────
TDBLookupCombo 该部件结合了TDBEdit部件和TDBComboBox部件的功能,
用户可以直接向该部件中输入字段值,也可以从下拉
式列表框中选择一个可选项,只是下拉式列表框中的
可选项是从相关的其他的数据库表中读取来的。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
16.1 数据浏览部件的基本特性
大多数的数据浏览部件是从标准部件中演变过来的,它们具有一些相似的特性,如TDBGrid部件和TStringGrid部件,TDBEdit和TEdit部件,TDBListBox和TListBox等等,只是数据浏览部件是专门用于显示和编辑数据库中记录的字段信息而已。它们的使用方法以及属性有很大的不同。在程序设计阶段,当数据浏览部件通过TDatasource部件和TTable部件连接到一个物理数据库时,便可在其中观看到数据库中的数据信息,也就是说在程序设计阶段便可以看到应用程序运行之后的效果,这种特性给我们修改应用程序带来了方便。
数据浏览部件是通过TDatasource部件连接到TTable部件中具体的字段部件的,因而数据控制部件具有一些共同的属性,用于连接TDatasource部件和TField部件。
Datasource属性:说明数据浏览部件连接的数据源部件TDatasource,数据浏览部件是从TDatasource部件中获取数据的。
DataField属性:说明数据浏览部件对应数据库表中实际的字段名称。该属性的值其实是TDataSource连接的数据集部件TTable或TQuery部件中的字段部件的名字。
因此要创建一个应用程序显示和编辑数据库表中的记录,一般要在应用窗体中放置一个数据集部件(TTable部件或TQuery部件)和至少一个数据源部件TDataSource部件以及多个数据浏览部件。其创建的一般步骤如下:
1.在窗体中放置上述所说的部件并连接数据集部件、数据源部件。
2.为各数据浏览部件设置DataSource属性值为窗休中存在的TDataSource部件的名字。
3.设置各数据浏览部件的DataField属性为数据集部件TTable或TQuery部件中存在的字段部件的名字。
在这里需要注意的是:TDBGrid部件和TDBNavigator部件是自动地访问数据集部件中所有可以访问的字段部件的,因此它们是没有DataField属性的,对于这些部件可以跳过第3步。
Enabled属性:当数据浏览部件连接到数据集部件时,它的Enabled属性决定了数据浏览部件能否接受来自鼠标、键盘和定时器事件的消息。当Enabled属性值为False时,数据浏览部件将变为无效而不能接受外界的信息。当与数据浏览部件相连的TDataSource部件的Enabled属性为False时或与数据源部件TDataSource部件相连的数据集部件TTable或TQuery部件的Active属性为False时,数据浏览部件也会随之而变为无效。
ReadOnly属性:大多数的数据浏览部件能够用来编辑修改与之对应的字段,因而有ReadOnly属性,该属性用来控制是否可以在数据浏览中编辑修改字段的值。缺省情况下,该属性的值为False,也就是说用户可以在其中编辑修改字段的值。
当然用户要想通过数据浏览部件编辑修改数据库表中的记录字段时,还要受到其它因素的制约。除了数据浏览部件本身的ReadOnly属性设置为False外,还要设置其相应的字段部件和数据集部件的CanModify属性True性;设置TDataSource部件的AutoEdit属性为True,如果数据库表是SQL数据库服务器中的数据库表,用户必须要具有读写数据库的权限等。当然在实际的程序设计过程中并没有这样繁琐,因为很多属性的缺省值都是允许用户修改表中的记录的。
除了TDBGrid部件之外,如果通过一个数据浏览部件修改字段值,那么当光标(或焦点)离开数据浏览部件时,数据浏览部件中被修改的值就会自动地被写回到磁盘数据库中。若在焦点没有离开数据浏览部件之前,按ESC键,那么Delphi会自动地放弃其对字段值的修改。在TDBGrid部件中修改表中的记录时,只有当焦点离开当前的记录时,即记录指针移到其他记录上时,用户对当前记录的修改会被写回磁盘上的数据库表,在焦点没有离开当前记录时,按ESC键,Delphi会自动放弃对当前记录的修改。
16.2 使用TDBText部件显示表中的数据
TDBText部件是一个只读的数据浏览部件,它类似于TLabel部件。只是TDBText 部件用于显示数据库表中记录的指定字段的值。因为TDBText部件显示的是表中当前记录的指定的字段的值,因而它显示的内容也是动态的,在其中显示的内容随着记录指针的移动而变化。用TDBText部件显示Customer.DB表中的Company字段信息时可用如图16.2所示的窗体来实现。
其中各部件的属性设置如表16.2所示
表16.2 表中各部件的属性设置
━━━━━━━━━━━━━━━━━━━
属 性 属 性 值
───────────────────
Table1.DatabaseName DEMOS
Table1.TableName Customer.DB
Datasource1.DataSet Table1
DBText.DataSource DataSource1
DBText.DBField Company
━━━━━━━━━━━━━━━━━━━
16.3 使用TDBEdit部件显示和编辑表中的数据
TDBEdit部件是专门用于显示编辑数据库表中当前记录的各个字段值的数据浏览部件,在应用程序中,我们常常用一个TDBEdit部件来对应表中一个字段,通过设置TDBEdit部件的DataSource、DataField属性便可以为TDBEdit部件指定表中相应的字段。如果用户希望能通过TDBEdit部件编辑修改数据库表中的字段值,还要设置TDBEdit部件的ReadOnly属性为False,设置与TDBEdit相连的数据源部件TdataSource部件的AutoEdit属性为True以及确保与TDataSource部件相连的数据集部件TTable或TQuery部件处于编辑状态,即设置它们的CanModify属性为True。
例如,在图16.3所示的窗体中,使用多个TDBEdit部件显示和编辑Customer.DB表中当前记录的各个字段。窗体中各部件的属性如表16.3所示。
图16.3 用TDBEdit部件显示和编辑表中的数据
表16.3 窗体中各部件的属性
━━━━━━━━━━━━━━━━━━━━
属 性 属 性 值
────────────────────
Table1.DatabaseName DEMOS
Table1.TableName Customer.DB
Datasource.DataSet Table1
DataSource.AutoEdit True
DBNavigator.DataSource DataSource1
━━━━━━━━━━━━━━━━━━━━
窗体中其它部件都是TLabel部件和TDBEdit部件,TLabel部件用于显示表中各字段的名字,TDBEdit部件对应表中各个字段。程序运行之后如图16.4所示。用户可以在其中任何一个TDBEdit部件中修改其中的字段值。
用TDBEdit部件显示和修改表中的数据
窗体中还使用了一个TDBNavigator部件,使用它的目的是在表中移动记录指针,还可以进行修改、插入、删除记录等操作,具体的使用和操作参看 16.5 TDBNaigator部件的使用一节。
16.4 用TDBGrid部件显示和编辑表中的数据
TDBGrid部件和TDBEdit部件一样,它们是专门用来显示和编辑数据库表中的数据的,但TDBGrid部件的功能更强大一些,它可以以网格的形式显示数据库表中全部记录的所有字段信息。
用TDBGrid显示数据库表中的记录信息
在TDBGrid部件中显示数据库表中的记录信息时,如果TDBGrid使用数据集部件在运行过程中动态生成的字段部件时,TDBGrid显示数据库表中的记录是按表中记录的缺省顺序和字段的缺省顺序显示表中的记录信息,而且要显示表中各个记录的全部字段的值。而在大多数情况下,用户可能希望按自己喜欢的字段顺序显示记录的各个字段,有时还希望只显示记录的部分字段值,要达到这一目的,必须在设计阶段使用字段编辑器来创建永久性的字段部件,并且还要设置各个字段部件有关的属性。
当使用字段编辑器(Fields Editor)创建永久性的字段部件提供给TDBGrid部件来使用时,我们可以在TDBGrid部件中更灵活地显示数据库表中的记录信息。例如在字段编辑器中的Fields列表框中我们可以设定字段部件的显示顺序,在设定好字段的显示顺序之后,TDBGrid部件便按这个顺序显示记录的各个字段值,当我们设置字段部件的DisplayFormat和EditFormat属性之后,在TDBGrid部件中便相应地以设定的显式和编辑格式显示字段值和编辑字段值;当设置某一个字段部件的Required属性为True时,当插入一条新记录时,必须要为该字段输入相应的字段值,否则会出错;通过设置字段部件的Visible属性,可以确定相应的字段值是否在TDBGrid组件中显示。有关使用字段编辑器来创建字段部件,设置字段部件的属性请参看3.6.2节。
16.4.1 TDBGrid部件的主要属性及应用
TDBGrid部件是用于显示和编辑数据库表中的记录信息的重要部件,它是我们在程序设计过程当中要经常使用的、灵活地用于显示和编辑数据库表中的记录信息的一个强有力的工具。TDBGrid具有很多重要的属性,我们可以在程序设计阶段和程序运行过程中进行设置。TDBGrid部件的一些重要属性及其设置方法请参看联机帮助文件。TDBGrid部件中一些重要的属性是Option属性、DrawMode属性和DefaultDrawing属性,我们重点对两个属性进行阐述。
Options属性:它是TDBGrid部件的一个扩展属性,在程序设计阶段设置Options属性可以控制TDBGrid部件的显示特性和对事件的响应特性。Options属性在TDBGrid部件的属性栏中显示时,它的前面带有一个+标志,双击+标志,便可以展开一个布尔型属性列表,用户可以逐个地修改其中的各个属性值,修改完毕后可以双击Options属性前的-标志,使TDBGrid部件的属性列表恢复到原来的显示状态。
(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)表16.5列出了Options属性中包含的所有的扩展属性项以及它们对TDBGrid部件的影响。
表16.5 TDBGrid部件的Options属性中的扩展属性项
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)属 性 名 取 值 及 影 响
─────────────────────────────────
dbEditing True: 缺省情况下为此值,确保用户能够在网格中编辑插
入和删除数据库表中的记录
False:在网格中不能编辑、插入和删除表中的记录
─────────────────────────────────
dbAlwaysShow True: 当用户选中记录中的一个字段时,自动地使该字段
Editor 处于编辑状态
False:缺省情况下为此值。当一个字段被选中,它不能
自动地变成编辑状态
─────────────────────────────────
dgTitles True: 缺省情况下为此值。在网格的第一行中显示字段名
或字段标题
False:在网格中不显示字段名或字段对应的标题
─────────────────────────────────
dgIndicator True: 缺省情况下为此值。在网格的最左边用一个黑箭头
标注当前记录指针所在的位置,在插入状态时,箭
头变成星状,在编辑状时,箭头变成"I"头。
False:在网格中不标识当前记录指针的位置
─────────────────────────────────
dgColumnResize True: 缺省情况下为此值。通过拖拉网格的垂直分隔线可
以改变网格中各列的宽度,在具体操作时要拖拉各
列中显示字段标题区域中的垂直分隔线。
False:网格中各列的宽度不能改变
─────────────────────────────────
dgCloLines True: 缺省情况下为此值。在网格中显示各列之间的垂直
分隔线。
False:在网格中不显示垂直分隔线
─────────────────────────────────
dgRowLines True: 缺省情况下为此值。在网格中显示各行之间的水平
分隔线。
False:在网格中不显示水平分隔线。
─────────────────────────────────
dgTabs True: 缺省情况下为此值。可以在记录的各字段之间移动
输入焦点(也即选择提示棒)
False:不能在记录的名字段之间移动输入焦点,在网格中
按Tab键时,直接跳出网格
─────────────────────────────────
dgRowSelect True: 选择提示棒覆盖整条记录中的全部字段
False:缺省情况下为此值。选择提示棒一次只覆盖记录中
的一个字段
─────────────────────────────────
dgAlwaysShow True: 缺省情况下为此值。在网格始终显示选择提示棒,即
-Selection 使其控件获得焦点时,也是如此。
False:只在当网格获得焦点时,才显示选择提示棒。
─────────────────────────────────
dbConfirmDelete True: 缺省情况下为此值。当在网格中删除记录时,弹出确
认信息。
False:在网格中删除记录时不弹出确认信息。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
用户想了解这些可选属性项的作用和影响,还可以参看联机帮助信息。
DragMode属性:该属性有两个可选的属性值。当它的值被设置为dmManual时,在应用程序运行过程中,用户可以用鼠标拖放网格中的各列,改变各列在网格中的显示顺序和位置。当用鼠标拖放网格中的一列、改变它在网格中的位置时,只是改变了该列在数据集中的位置,并没有改变它对应的数据库表中的位置。当该属性的值被设置成dmAutomatic时,用户不能用鼠标拖放网格中的各列而改变它在网格中的位置。
DefalultDrawing属性:该属性是布尔型属性,它用于控制网格中各网格单元的绘制方式。在缺省情况下,该属性的值为True,也就是说Delphi使用网格本身缺省的方法绘制网格中各网格单元,并填充各网格单元中的内容,各网格单元中的数据根据其对应的字段部件的DisplayFormat属性和EidtFormat属性进行显示和绘制。如果DefaulDrawing属性被设置为False时,Delphi不会自动地绘制网格中各网格单元和网格单元中的数据,用户必须自己为TDBGrid部件的OnDrawDataCell事件编写相应的程序用于绘制各网格单元和其中的数据。
来源:http://www.tulaoshi.com/n/20160219/1616138.html
看过《Delphi 数据浏览部件的应用及编程》的人还看了以下文章 更多>>