DBGridEh Footer 使用
在DBGridEh的底部增加Footer行,可以显示相关提示字符和字段的(合计、平均值、行数等)功能,以及其它特殊的统计要求。操作如下:
使用 ClientDataSet1
ClientDataSet1.EmptyDataSet;
DBGridEh1.SumList.RecalcAll;
最快捷添加步骤:注意不要设置其它的属性
1、DBGrideh1的FooterRowCount属性设置为1。
2、DBGrideh1的Columns字段中找到Footer属性。
3、在Footer子属性valueType中设置想要统计的类型比如fvtSum。
4、DBGrideh1的SumList.Active属性设置为True。
一、语句说明
1、设置Footer行数
DBGrideh1.FooterRowCount:=1; // 定义行数
2、增加Footer
DBGridEh1.Columns[0].Footers.Add; // 加入Footer首行
DBGridEh1.Columns[0].Footers.Add; // 加入Footer次行
3、删除Footer
DBGridEh1.Columns[0].Footers.Delete(1); // 删除Footer
4、Sum合计操作
DBGridEh1.SumList.Active:=True; // 合计操作
DBGridEh1.SumList.Active:=False; // 取消合计操作
5、Footer显示颜色
DBGridEh1.FooterFont.Color:=clRed; // 字体色
DBGridEh1.FooterColor := clYellow; // 背景色
6、Footer数据类型
DBGrideh1.Columns[0].Footer.ValueType:=fvtStaticText; // 定义Foolter数据类型
7、Footer显示样式
DBGrideh1.Columns[0].Footer.Alignment:=tacenter; // 标题字符对齐方式
taRightJustify // 右对齐
taLeftJustify // 左对齐
taCenter // 居中对齐
8、Footer数据类型
DBGrideh1.Columns[0].Footer.ValueType:=fvtStaticText; // 定义Foolter数据类型
TFooterValueType = (fvtNon, fvtSum, fvtAvg, fvtCount, fvtFieldValue, fvtStaticText);
fvtNon // 无 fvtSum // 合计数 fvtAvg // 平均值 fvtCoun // 行数 fvtFieldValue // 字段数据 fvtStaticText) // 静态文本
9、Footer数据显示格式
DBGrideh1.Columns[7].Footer.DisplayFormat:='#0.00'; // 显示格式
DBGrideh1.Columns[7].Footer.DisplayFormat:='###,###,##0.00'; // 显示格式化
10、读取Footer的值
通过函数 DBGridEh1.GetFooterValue(行数,DBGridEh1.Columns[n]))获取。 第1个参数:Foolter行数:0..n 。第2个参数TColumns类型,Columns[n]中的n,是列数0..ount-1。例:
FloatValue:=StrToFloat(DBGridEh1.GetFooterValue(0,DBGridEh1.Columns[7])); // 参数0,Footer的第1行, Columns[7]第8列的Sum值
二、实用语句
1、加入Footer
DBGrideh1.FooterRowCount:=1; // 定义合计化为 1行
DBGrideh1.SumList.Active:=True; // 确定使用合计 列
DBGridEh1.FooterFont.Color:=clRed; // 字体色
DBGridEh1.FooterColor := clYellow; // 背景色
2、Footer加入字符Column
如:设置第1列,在Footer显示 “合计”字符
DBGrideh1.Columns[0].Footer.ValueType:=fvtStaticText; // 定义合计标题类型
DBGrideh1.Columns[0].Footer.Value:='合计'; // 合计标题显示字符
DBGrideh1.Columns[0].Footer.Alignment:=tacenter; // 标题字符对齐方式
DBGrideh1.Columns[0].Footer.Color:= clBlue;
3、Footer加入合计Column
如,设置第8列,作为合计字段
DBGrideh1.Columns[7].Footer.ValueType := fvtSum; // 合计列的类型
DBGrideh1.Columns[7].Footer.DisplayFormat:='#0.00'; // 格式化
DBGrideh1.Columns[7].Footer.Alignment := taRightJustify; // 设置对齐方式
4、Footer取列的平均值
如,设置第5列flooter,作为平均值
DBGrideh1.Columns[4].Footer.ValueType := fvtAvg; // 平均值
DBGrideh1.Columns[4].Footer.DisplayFormat:='#0.00'; // 格式化
DBGrideh1.Columns[4].Footer.Alignment := taCenter; // 设置对齐方式
三、事件
1、OnShow事件初始化(设置)Footer
procedure TFrom1.OnShow(Sender: TObjec);
begin
// 设置Footer
DBGridEh1.Flat:=True;
DBGridEh1.FooterRowCount:=2; // Footer行数
DBGridEh1.FooterColor:=clYellow; // 背景色
DBGridEh1.FooterFont.Color:=clRed; // 前景色
DBGridEh1.Columns[0].Footers.Add; // 加入Footer首行
// 设置首行第1列
DBGridEh1.Columns[0].Footers[0].ValueType:=fvtStaticText; // 显示文本
DBGridEh1.Columns[0].Footers[0].Value:='合计';
DBGridEh1.Columns[0].Footers[0].Alignment:=taCenter; // 中心对齐
DBGridEh1.Columns[0].Footers.Add; // 加入Footer次行
// 设置首行第2列
DBGridEh1.Columns[0].Footers[1].ValueType:=fvtCount; // 计数
DBGridEh1.Columns[0].Footers[1].FieldName:='编号'; // 字段名
DBGridEh1.Columns[0].Footers[1].Alignment:=taCenter; // 中心对齐
DBGridEh1.Columns[3].Footers.Add; // 加入首行第4列
// 设置首行第4列
DBGridEh1.Columns[3].Footers[0].ValueType:=fvtSum; // 数据类型:合计
DBGridEh1.Columns[3].Footers[0].FieldName:='金额'; // 字段名
DBGridEh1.Columns[3].Footers[0].DisplayFormat:='#,###,###.00'; // 显示格式
DBGridEh1.Columns[3].Footers.Add; // 加入次行第4列
// 设置次行第4列
DBGridEh1.Columns[3].Footers[1].ValueType:=fvtFieldValue; // 数据类型:字段值
DBGridEh1.Columns[3].Footers[1].FieldName:='账号'; // 字段名
DBGridEh1.Columns[3].Footers[1].Font.Style:=[fsBold]; // 文字格式
DBGridEh1.Columns[3].Footers[1].Font.Color:=clBlue; // 文字尺寸
DBGridEh1.SumList.Active:=True; // 确定 统计合计
end;
2、GetFooterParams事件,动态修改背景、字体颜色和Cell颜色
procedure TFrom1.DBGridEh1GetFooterParams(Sender: TObject; DataCol,Row: Integer; Column: TColumnEh; AFont: TFont; var Background: TColor;
var Alignment: TAlignment; State: TGridDrawState; var Text: String);
begin
if Column.Index=7 then // 通过列名访问
// if Column.Field.FieldName='金额' then // 通过字段名访问
Begin
if Text<>'' then
if StrtoFloat(Text)>1000 then
begin
Column.Color:=clRed; // 修改Column的Cell列的背景色
Column.Font.Color:= clBlue; // 修改Column的Cell列的字符色
Column.Footer.Color:= clBlue; // 修改Column的Footer的背景色
Column.Footer.Font.Color:= clRed; // 修改Column的Footer的字符色
End
else begin
Column.Color:=clBlue;
Column.Font.Color:= clRed;
Column.Footer.Color:= clRed;
Column.Footer.Font.Color:= clBlue;
end;
end;
end;
原文链接:https://blog.csdn.net/lyhoo163/article/details/50808948