12.数据控制组件之DBGrid组件
数据集组件使应用程序与数据库之间建立了联系,同时应用程序还需要将数据库中的数据提供给用户,以便用户可以对数据库中的数据进行编辑和浏览。数据控制组件就是用于显示和编辑数据表中的数据,因此也称为数据浏览组件或数据感知组件。
组件面板中 Data Controls 中间的组件就是数据控制组件。如下图:
本节主要介绍 TDBGrid 组件。该组件以网格的方式显示数据表中的数据,同时可以对数据进行编辑修改。是 Delphi 中功能强大的数据控制组件。它显示从 DataSource 中获取的数据。可以直接在组件上编辑、新增、删除数据。
- 按下回车键可以在当前记录前插入一个空白记录
- 按下 Ctrl + Del 键可以删除当前记录
12.1 DBGrid 组件的主要属性
- DataSource
该属性指定数据源组件,数据控制组件是从数据源组件中读取数据的。
- Columns
该属性用来设置 DBGrid 组件中的列。也就是说,该属性用于指定位置 DBGrid 组件中的列和 DataSource 属性指定的数据集组件中字段的对应关系。Columns 中列的属性:
列属性 | 含义 |
Alignment | 用于指定列中内容的对齐方式,取值: taLeftJustify - 左对齐 taCenter - 居中对齐 taRightJustify - 右对齐 |
ButtonStyle | 用于设置列中内容显示按钮的样式,取值: cbsAuto - 组合框 cbsEllipsis - 省略号按钮,单击时触发 OnEditButtonClick 事件 cbsNone - 无按钮 |
Color | 设置背景颜色 |
DropDownRows | 当使用组合框时,该属性决定下拉列表下拉的行数 |
Expanded | 如果列对象对应的字段是什么 ADT 或数组字段,该属性用于控制是否展开 |
FieldName | 设定列对应的数据表中的字段名 |
PickList | 设置组合框在下拉列表用于选择的内容 |
Title | 设置别的标题 |
ReadOnly | 是否只读 |
Width | 列的宽度,默认为 Field 的 DisplayWidth |
Font | 列中内容的显示字体 |
- FixedColor
指定 DBGrid 的边框颜色
- Enabled
该属性决定 DBGrid 是否可接受来自鼠标、键盘、定时器事件的信息
- Options
该属性配置 DBGrid 显示数据的方式。属性取值如下:
取值 | 含义 |
dgEditing | 该属性为 True 表示用户可以在 DBGrid 中文编辑数据,如果同时选择了 dgRowSelect,该属性值被忽略 |
dgAlwaysShowEditor | 该属性设置为 True,表示 DBGrid 一直处于编辑状态,不需要单击单元格后按回车才进入编辑状态。该属性只有在 dgEditing 为 True 时才有效 |
dgTitles | 显示列标题 |
dgIndicator | 显示当前记录的标示符 |
dgColumnResize | 决定在运行时列宽是否可调节 |
dgColLines | 在列之间是否显示表格线 |
dgRowLines | 在行李之间是否显示表格线 |
dgTabs | 用户是否可以使用 Tab 键和 Shift + Tab 键在单元格之间跳转 |
dgRowSelect | 在运行时是否可用选择整行数据 |
dgConfirmDelete | 如果删除记录,则是否弹出对话框进行确认 |
dgAlwaysShowSelection | 是否一直显示选中的内容 |
dgCancelOnExit | 在退出程序时,DBGrid 是否取消新增但没有输入数据的记录 |
dgMutilSelect | 是否可以同时选择多行 |
- TitleFont
设置网格中标题的字体
- DragMode
该属性用于设置是否可以用鼠标改变列在网格中的显示顺序和位置。取值如下:
- dmManual - 可以
- dmAutomatic - 不可以
- DefaultDrawing
该属性值用于控制网格中单元格的绘制方式。,默认值为 True,如果设置为 False,则必须实现 DBGrid 组件的OnDrawDataCell 事件来编写相应的程序用于绘制各网格单元格和其中的数据。
12.2 DBGrid 组件的主要事件
- OnColEntor
当用户进入网格各列时触发该事件
- OnColExit
当用户离开网格各列时触发该事件
- OnDblClick
当用户在网格中双击鼠标左键时触发该事件
- OnDragDrop
当用户在网格中放下一个拖动的对象时触发该事件
- OnDragOver
当用户拖动一个对象到组件上时触发该事件
- OnDrawDataCell
用于绘制网格中单元格并填充数据时触发的事件
- OnEndDrag
当用户停止拖放时触发该事件
- OnEnter
当网格获得焦点时触发该事件
- OnExit
当网格失去焦点时触发该事件
- OnKeyDown
当用户在网格中按下任何键或组合键时触发该事件
- OnKeyPress
当用户在网格中按数字键或字母键时触发该事件
- OnKeyUp
当用户在网格中释放任何按下的键时触发该事件
12.3 DBGrid Columns 的使用
1.新建一个 VCL Form Application
2.在窗体上放置一个 ADOConnection 组件,设置:
ConnectionString:Provider=MSDASQL.1;Persist Security Info=False;Data Source=demodb
LoginPrompt:False
Connected:True
3.在窗体上放置一个 ADODataSet 组件,设置:
Connection:ADOConnection1
CommandType:cmdTable
CommandText:d_students
Active:True
4.在窗体上放置一个 DataSource 组件,设置:
DataSet:ADODataSet1
5.在窗体上放置一个 DBGrid 组件,设置:
DataSource:DataSource1
Align:alClient
界面设计如下图所示:
6.在 DBGrid 组件上右击选择 “Columns Editor”,弹出 Columns 编辑器,如下图所示:
7.在 Cloumns 编辑器上右击,选择“Add all fields”,将数据集中的所有字段都添加到编辑器中,(操作方法与数据集中的字段编辑器相同,参见《5.数据集组件中的字段》),如下图所示:
8.在 Columns 编辑器中,可以保留显示的字段,也可以删除不需要显示的字段,单击某个字段后,可以设置其属性,现在,我们单击每个字段并设置其 Title 属性中的 Caption,分别将各个字段的标题设置为学号、姓名、性别、语文、数学、英语。如下图所示:
9.运行程序,如下图所示: