DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: cuiqingbo
今日帖子: 19
在线用户: 11
导航: 论坛 -> 数据库专区 斑竹:liumazi,waterstone  
作者:
男 beginer (初学者) ★☆☆☆☆ -
盒子活跃会员
2017/6/22 15:52:49
标题:
怎样在DBGrideh生成的汇总行中加上一列比值,如进度或百分比等 浏览:1897
加入我的收藏
楼主: 如图:以DBGridEh的DataGrouping为例,A列和B列可以通过设置,在汇总栏上显示汇总数,现在想在汇总栏的C列上显示一个比值,请教应该在哪个事件中写?怎么写?多谢了。
此帖子包含附件:
PNG 图像
大小:28.7K
----------------------------------------------
新手,想得到您的帮助!
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2017/6/22 16:07:22
1楼: http://bbs.2ccc.com/topic.asp?topicid=534539
浪费。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 beginer (初学者) ★☆☆☆☆ -
盒子活跃会员
2017/6/22 17:53:56
2楼: 这是我在delphi技术区发的,解答的不是我想要的。所以才来数据库区又发一次
----------------------------------------------
新手,想得到您的帮助!
作者:
男 ghs_79 (ghs) ★☆☆☆☆ -
盒子活跃会员
2017/6/23 8:36:48
3楼: 1. Active - True;
2. GroupPanelVisible - True; 注意如果只设置这两项,则运行时,它会显示一个 Panel 在 DBGrid 的顶上,并有英文提示,拖一个字段到这里,它会自动根据这个字段进行分组显示。
3. GroupLevels 点开,在弹出来的窗口里面,增加一条,类似增加一个字段一样的操作。
3.1. 在增加的这一条的属性里面,选择 ColumnName,下拉开,如果 DBGridEh1 已经在设计期加了静态字段,这里就会看到几个字段,挑选需要用来作为分组依据的字段。DBGridEh1 将会用这个字段来进行分组。
4. 分组统计:Footers 点开,弹出一个窗口,类似字段编辑器。增加一条。
4.1. 选中增加的一条,属性里面选择 ColumnItems,会弹出窗口,窗口里面是前述的三个字段(必须是设计期已经为 DBGridEh1 增加了静态字段)。
4.2. 选择 ShuLiang 字段,属性里面的 ValueType 下拉选择 gfvSumEh。就会在分组的 Footer 里面显示这一组的合计数字(小计)。
5. DefaultStateExpanded - True 表格会加载后自动展开。否则加载后,是收缩的,只显示组,不显示组里面的记录。
----------------------------------------------
Delphi爱好者。
作者:
男 ghs_79 (ghs) ★☆☆☆☆ -
盒子活跃会员
2017/6/23 10:22:26
4楼: 以上方法是设置分组合计。
但是不会显示比值,通过事件DBGridEh1DataGroupFooterToDisplayText来修正。
1、先定义一个单元内的变量
cb, ss: Currency;

procedure TForm1.DBGridEh1DataGroupFooterToDisplayText(
  Grid: TCustomDBGridEh; Column: TColumnEh;
  GroupFooter: TGridDataGroupFooterEh;
  FooterColumnItem: TGridDataGroupFooterColumnItemEh; var AValue: Variant;
  var DisplayValue: String; var Processed: Boolean);
var
  I: Integer;
  tmp: string;
begin
  //修正分组合计的值
  if Column.FieldName = 'DML' then
  begin
    if ss <> 0 then
    begin
      DisplayValue := '毛利率:' + FormatFloat('##.##%', cb/ss * 100 );
      Processed := True; //告诉系统,按我修正后的内容显示
    end;
  end
  else if Column.FieldName = 'DMONEY_IN' then
    cb := AValue //记录变量值
  else if Column.FieldName = 'DMONEY_SS' then
    ss := AValue
end;
----------------------------------------------
Delphi爱好者。
作者:
男 beginer (初学者) ★☆☆☆☆ -
盒子活跃会员
2017/6/24 20:12:28
5楼: 果然可以,高手啊。多谢
----------------------------------------------
新手,想得到您的帮助!
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行78.125毫秒 RSS