Delphi7自带的DBGrid控件在数据控制方面略显弱势,因此网上流行的DBGridEH控件显得尤为重要,下载了安装方法
还比较繁琐,因此写个说明,呵呵,方便自己及同道中人查阅。顺便提供个DBGridEH下载地址:
http://www.51delphi.com/delphi/download?num=1,注意要在IE里面输入这个地址,我用火狐浏览器就下载不了,
我也不知道为什么。
///////////////////////////////////////////////////////////////////////////////////////////////////////
(1)新建文件夹:D:\Program Files\Borland\Delphi7\下新建目录Ehlib
(2)在Tools->Environment Options->Library->Library Path 中添加这个目录.
(3)将Common和Delphi7中的目录的文件拷贝到上面的这个目录中
(4)打开runtime package - EhLib70.Dpk文件,点击"Compile"编译这个package
(5)打开并编译EhLibDataDrivers70.Dpk
(6)在编译完run-time packages 后安装DclEhLib70.BPL和DclEhLibDataDrivers70.BPL
(design-time packages)into the IDE.BPL文件在你自己定义的:$(DELPHI)\Projects\Bpl
(7)打开DclEhLib70.Dpk(design-time package)编译,然后点击"Install"to register EhLib
components on the component palette.]
(8)最后打开和安装DclEhLibDataDrivers70.Dpk package
//////////////////////////////////////////////////////////////////////////////////////////////////////
DBGridEH使用说明如下:
a、定制标题行
1、制作复杂标题行
标题行可设为2行以上高度,并可以为多列创建一个共同的父标题行。为实现这个效果,需在各个列标题属性中以“|”分隔父标题和子标题,如办公用品包括代码和名称两部分,具体属性设置如下:
usemultititile=true;
titlelines=2
dbgrideh.columns[0].title.caption := 办公用品|代码;
dbgrideh.columns[1].title.caption := 办公用品|名称;
2、标题行显示图片
实现图2中的购买人标题行显示效果。首先添加一个imagelist组件img1并在其中添加一组bmp,ico格式的图片。然后将dbgrideh的
titleimages设置为img1.最后在需要显示图片的列标题的imageindex中设置需要显示的img1中图片的序号。按f9执行一下程序,
是不是很酷!
3、自动显示标题行的升降排序标志符并做相应排序
dbgrideh组件可以在标题行单元格中显示小三角形升、降排序标志符图片,在运行时可点击标题行,图片自动切换并做相应排序。具体属性设置如下:
optionseh=dghautosortmarking
column.title.titlebutton=true
sortmarkedcolumns 为当前排序列可在运行时使用.
然后在该列的ontitleclick事件中添加代码:
procedure tform_query.dbgrideh1titlebtnclick(sender: tobject;
acol: integer; column: tcolumneh);
var
sortstring:string; //排序列
begin
//进行排序
with column do
begin
if fieldname = then
exit;
case title.sortmarker of
smnoneeh:
begin
title.sortmarker := smdowneh;
sortstring := column.fieldname + asc;
end;
smdowneh: sortstring := column.fieldname + asc;
smupeh: sortstring := column.fieldname + desc;
end;
//进行排序
try
dataset.sort := sortstring //dataset为实际数据集变量名
except
end;
end;
end;
切记lookup型字段不可做上述设置,否则系统会提示错误。
另外,组件说明书中提到不需要编写代码即可自动排序,但是不编写代码自动排序方法我还没找到,有知道的朋友烦请告诉我一声啊!让我也对程序代码进行“减肥”。
b、定制表格底部区域的汇总统计行
dbgrideh
组件可以在表格底部显示汇总行,如记录数合计、列字段累加和等信息。在footerrowcount中设置底部显示的行数;然后在footers
编辑器中添加一个或多个显示列,显示列可以是字段值累加和、记录数合计、字段值或静态文件等集合类型,可以在设计时在valuetype属性中设置,也可
在运行时通过设置footers[i].valuetype指定其类型。其含义见下表:
属性值
fvtsum
fvtcount
fvtfieldvalue
fvtstatictext
含义
字段累加和
记录数合计
字段值
静态文本
切记设置dbgrideh.sumlist.active为true,才会进行汇总统计运算。需注意的是,如显示类型为不是当前列的累加和,则需在fieldname属性中指定汇总列,其它类型则无此要求。
还比较繁琐,因此写个说明,呵呵,方便自己及同道中人查阅。顺便提供个DBGridEH下载地址:
http://www.51delphi.com/delphi/download?num=1,注意要在IE里面输入这个地址,我用火狐浏览器就下载不了,
我也不知道为什么。
///////////////////////////////////////////////////////////////////////////////////////////////////////
(1)新建文件夹:D:\Program Files\Borland\Delphi7\下新建目录Ehlib
(2)在Tools->Environment Options->Library->Library Path 中添加这个目录.
(3)将Common和Delphi7中的目录的文件拷贝到上面的这个目录中
(4)打开runtime package - EhLib70.Dpk文件,点击"Compile"编译这个package
(5)打开并编译EhLibDataDrivers70.Dpk
(6)在编译完run-time packages 后安装DclEhLib70.BPL和DclEhLibDataDrivers70.BPL
(design-time packages)into the IDE.BPL文件在你自己定义的:$(DELPHI)\Projects\Bpl
(7)打开DclEhLib70.Dpk(design-time package)编译,然后点击"Install"to register EhLib
components on the component palette.]
(8)最后打开和安装DclEhLibDataDrivers70.Dpk package
//////////////////////////////////////////////////////////////////////////////////////////////////////
DBGridEH使用说明如下:
a、定制标题行
1、制作复杂标题行
标题行可设为2行以上高度,并可以为多列创建一个共同的父标题行。为实现这个效果,需在各个列标题属性中以“|”分隔父标题和子标题,如办公用品包括代码和名称两部分,具体属性设置如下:
usemultititile=true;
titlelines=2
dbgrideh.columns[0].title.caption := 办公用品|代码;
dbgrideh.columns[1].title.caption := 办公用品|名称;
2、标题行显示图片
实现图2中的购买人标题行显示效果。首先添加一个imagelist组件img1并在其中添加一组bmp,ico格式的图片。然后将dbgrideh的
titleimages设置为img1.最后在需要显示图片的列标题的imageindex中设置需要显示的img1中图片的序号。按f9执行一下程序,
是不是很酷!
3、自动显示标题行的升降排序标志符并做相应排序
dbgrideh组件可以在标题行单元格中显示小三角形升、降排序标志符图片,在运行时可点击标题行,图片自动切换并做相应排序。具体属性设置如下:
optionseh=dghautosortmarking
column.title.titlebutton=true
sortmarkedcolumns 为当前排序列可在运行时使用.
然后在该列的ontitleclick事件中添加代码:
procedure tform_query.dbgrideh1titlebtnclick(sender: tobject;
acol: integer; column: tcolumneh);
var
sortstring:string; //排序列
begin
//进行排序
with column do
begin
if fieldname = then
exit;
case title.sortmarker of
smnoneeh:
begin
title.sortmarker := smdowneh;
sortstring := column.fieldname + asc;
end;
smdowneh: sortstring := column.fieldname + asc;
smupeh: sortstring := column.fieldname + desc;
end;
//进行排序
try
dataset.sort := sortstring //dataset为实际数据集变量名
except
end;
end;
end;
切记lookup型字段不可做上述设置,否则系统会提示错误。
另外,组件说明书中提到不需要编写代码即可自动排序,但是不编写代码自动排序方法我还没找到,有知道的朋友烦请告诉我一声啊!让我也对程序代码进行“减肥”。
b、定制表格底部区域的汇总统计行
dbgrideh
组件可以在表格底部显示汇总行,如记录数合计、列字段累加和等信息。在footerrowcount中设置底部显示的行数;然后在footers
编辑器中添加一个或多个显示列,显示列可以是字段值累加和、记录数合计、字段值或静态文件等集合类型,可以在设计时在valuetype属性中设置,也可
在运行时通过设置footers[i].valuetype指定其类型。其含义见下表:
属性值
fvtsum
fvtcount
fvtfieldvalue
fvtstatictext
含义
字段累加和
记录数合计
字段值
静态文本
切记设置dbgrideh.sumlist.active为true,才会进行汇总统计运算。需注意的是,如显示类型为不是当前列的累加和,则需在fieldname属性中指定汇总列,其它类型则无此要求。