基于DBGrid的数据浏览控件的开发
摘要:Delphi的DBGrid控件使用灵活,应用广泛,但没有提供显示记录的序号,点击列标题排序,对列宽度、顺序等信息的保存与恢复功能,在实际应用中存在不便。该文阐述了DBGrid控件的内部实现机制,介绍了对DBGrid控件添加显示序号,点击列标题排序,保存与恢复列宽度、顺序等信息的实现方法。
关键词:Delphi;DBGrid控件;记录;显示序号;排序
中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)35-2406-05
The Development of Data Browsing Control Based on DBGrid
WANG Pei-rong
(College of Electronic Information and Automatization,Chongqing Institute of Technology,Chongqing 400050,China)
Abstract: DBGrid contril has been applied widely in Delphi for its flexible use,but this control does not provide these function such as displaying of record serial number,sorting of column title,saving and restoring of column width and column sequence.This paper describes the internal realization mechanism of DBGrid control,and introduces how to realize displaying of record serial number,sorting of column title and saving and restoring of column width and column sequence.
Key words: delphi; DBGrid control; record; displaying serial number; sorting
Delphi的DBGrid是显示、编辑数据的控件,使用率相当高。在使用中,常常需要显示记录的序号,对表格中的记录进行排序处理,以及对列宽度,列顺序的保存与恢复,这通常都需要对DBGrid的具体事件进行特定编码,才能满足需要。
作者在开发一个考勤管理系统时,用户就提出需要对表格中的记录进行排序,能够记住用户上次对表格的列宽度、顺序的调整,能够显示记录序号。所以将这三个典型功能进行控件标准化,创建了一个新的基于DBGrid的控件,整合了上述功能,完全可以代替原有的DBGrid控件,使用起来相当方便。
1 方法
要在DBGrid中整合显示序号,点击列标题排序,保存列宽度等信息,最好的办法就是定义一个从DBGrid继承的新控件。点击Delphi的Component菜单下的New Component,在弹出的窗口中按图1进行设置,即可生成该新控件。
相对于DBGrid控件,本控件新增了标志排序状态的属性,用字符串ASCChar作为升序标志,用字符串DESCChar作为降序标志,用逻辑变量ShowRecNo作为显示序号的控制属性。新增方法SaveColumnsToIni,LoadColumnsFromIni分别用来保存和恢复上次列宽度,列顺序等信息。
Delphi提供了DBGrid的源代码,文件名为DBGrids.pas,该文件在Delphi6版本中存放在\Source\Vcl目录下,在Delphi2005版本中存放在\3.0\source\Win32\db目录下。打开Delphi的DBGrids.pas文件,拷贝TDBGrid类的定义内容到图1生成的单元文件TSDBGrid.pas中,作为新控件类的定义。在TSDBGrid.pas文件的published部分增加属性property ASCChar:string;property DESCChar:string;property ShowRecNo:Boolean;在public部分增加方法procedure SaveColumnsToIni(sect,name:string);procedure LoadColumnsFromIni(sect,name:string);之后按CTRL+SHIFT+C键,Delphi就会补充完整的定义框架。
1.1 显