在TDBGrid部件中显示数据库表中的记录信息时如果TDBGrid使用数据集部件在运行过程中动态生成的字段部件时TDBGrid显示数据库表中的记录是按表中记录的缺省顺序和字段的缺省顺序显示表中的记录信息而且要显示表中各个记录的全部字段的值而在大多数情况下用户可能希望按自己喜欢的字段顺序显示记录的各个字段有时还希望只显示记录的部分字段值要达到这一目的必须在设计阶段使用字段编辑器来创建永久性的字段部件并且还要设置各个字段部件有关的属性
当使用字段编辑器(Fields Editor)创建永久性的字段部件提供给TDBGrid部件来使用时我们可以在TDBGrid部件中更灵活地显示数据库表中的记录信息例如在字段编辑器中的Fields列表框中我们可以设定字段部件的显示顺序在设定好字段的显示顺序之后TDBGrid部件便按这个顺序显示记录的各个字段值当我们设置字段部件的DisplayFormat和EditFormat属性之后在TDBGrid部件中便相应地以设定的显式和编辑格式显示字段值和编辑字段值当设置某一个字段部件的Required属性为True时当插入一条新记录时必须要为该字段输入相应的字段值否则会出错通过设置字段部件的Visible属性可以确定相应的字段值是否在TDBGrid组件中显示有关使用字段编辑器来创建字段部件设置字段部件的属性请参看节
TDBGrid部件的主要属性及应用
TDBGrid部件是用于显示和编辑数据库表中的记录信息的重要部件它是我们在程序设计过程当中要经常使用的灵活地用于显示和编辑数据库表中的记录信息的一个强有力的工具TDBGrid具有很多重要的属性我们可以在程序设计阶段和程序运行过程中进行设置TDBGrid部件的一些重要属性及其设置方法请参看联机帮助文件TDBGrid部件中一些重要的属性是Option属性DrawMode属性和DefaultDrawing属性我们重点对两个属性进行阐述
Options属性它是TDBGrid部件的一个扩展属性在程序设计阶段设置Options属性可以控制TDBGrid部件的显示特性和对事件的响应特性Options属性在TDBGrid部件的属性栏中显示时它的前面带有一个+标志双击+标志便可以展开一个布尔型属性列表用户可以逐个地修改其中的各个属性值修改完毕后可以双击Options属性前的标志使TDBGrid部件的属性列表恢复到原来的显示状态
表列出了Options属性中包含的所有的扩展属性项以及它们对TDBGrid部件的影响
表 TDBGrid部件的Options属性中的扩展属性项
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
属 性 名 取 值 及 影 响
─────────────────────────────────
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事件编写相应的程序用于绘制各网格单元和其中的数据
在了解了TDBGrid部件的各个属性之后我们便可以使用TDBGrid部件来显示和编辑数据库表中的数据了图所示的应用窗体中各部件的属性设置如表所示
[] [] []