DBGridEh怎样能出分组统计?
如图红框在记录后边加上数字

晚上好🌙🌙🌙
本答案参考ChatGPT-3.5
DBGridEh是一个第三方的Delphi组件,支持分组和统计功能,使用DBGridEh能够高效便捷地实现数据可视化。下面是实现DBGridEh分组统计的步骤:
1.将DBGridEh设置为可以分组
将DBGridEh的Options中的dgGrouping选项设为True,表示可以分组。然后设置Grid的Title样式,这里以设置为office2010风格的样式为例:
procedure TForm1.FormCreate(Sender: TObject);
begin
//设置Grid分组风格
DBGridEh1.SearchPanel.ButtonStyle := spbsOffice2010Silver;
DBGridEh1.Title.Font.Style := [fsBold];
DBGridEh1.Title.Color := clGradientInactiveCaption;
DBGridEh1.Title.Height := 32;
DBGridEh1.Title.Flat := True;
DBGridEh1.Title.SortMarkerStyle := smstNone;
DBGridEh1.Title.SortMarkerWidth := 0;
DBGridEh1.Title.VertAlignment := taCenter;
DBGridEh1.Title.HorzAlignment := taCenter;
DBGridEh1.Title.EndEllipsis := False;
DBGridEh1.Title.Active := True;
end;
2.设置分组信息
将需要分组的字段按照从左到右的顺序添加到Grid的GroupingColumnIndexes列表中。这里以ProNo为例,只需要将ProNo对应的列的Index添加到GroupingColumnIndexes中即可。
procedure TForm1.FormCreate(Sender: TObject);
begin
//设置Grid分组
DBGridEh1.GroupingColumnIndexes := '0';
end;
3.设置分组统计信息
在Grid的FooterRowCount属性中设置Footer的行数,可以是0、1、2或3。然后将需要统计的字段按照从左到右的顺序添加到Grid的FieldsPerFooter中的Cells[]数组中。
procedure TForm1.FormCreate(Sender: TObject);
begin
//设置Grid分组统计信息
DBGridEh1.FooterRowCount := 1;
DBGridEh1.FieldsPerFooter[0].FieldName := 'ProNo';
DBGridEh1.FieldsPerFooter[0].Expression := 'COUNT(ProNo)';
end;
这样就可以在Grid的最下面的一行展示分组统计信息了。需要注意的是,由于Grid的Rows和Columns的Index都是从0开始的,所以在设置分组信息和分组统计信息时需要将ProNo对应的列的Index设置为0。
完整代码如下:
procedure TForm1.FormCreate(Sender: TObject);
begin
//设置Grid分组风格
DBGridEh1.SearchPanel.ButtonStyle := spbsOffice2010Silver;
DBGridEh1.Title.Font.Style := [fsBold];
DBGridEh1.Title.Color := clGradientInactiveCaption;
DBGridEh1.Title.Height := 32;
DBGridEh1.Title.Flat := True;
DBGridEh1.Title.SortMarkerStyle := smstNone;
DBGridEh1.Title.SortMarkerWidth := 0;
DBGridEh1.Title.VertAlignment := taCenter;
DBGridEh1.Title.HorzAlignment := taCenter;
DBGridEh1.Title.EndEllipsis := False;
DBGridEh1.Title.Active := True;
//设置Grid分组
DBGridEh1.GroupingColumnIndexes := '0';
//设置Grid分组统计信息
DBGridEh1.FooterRowCount := 1;
DBGridEh1.FieldsPerFooter[0].FieldName := 'ProNo';
DBGridEh1.FieldsPerFooter[0].Expression := 'COUNT(ProNo)';
end;
需要注意的是,上述代码只能实现对ProNo字段的分组统计,如果需要对其他字段进行分组统计,需要将添加字段到GroupingColumnIndexes和FieldsPerFooter中的Cells[]数组中的Index改为对应的值。
另外关于 "如图红框在记录后边加上数字" 这个需求,可以在分组统计信息的Expression中设置输出的格式,比如:
DBGridEh1.FieldsPerFooter[0].Expression := '"共 " + COUNT(ProNo) + " 条记录"';
这样就可以在Grid的最下面的一行的ProNo字段后面输出“共 N 条记录”的信息了。