如何在cxgrid的合计栏设计百分比

更新时间:2024-05-22 12:52:02 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

如何在cxgrid的合计栏设计百分比

一、先用代码动态添加合计栏所需的列的合计,将要设置百分比的合计栏的kind=sknone,可以用于自定义百分比,以下增加幅度一栏为百分比 先定义事件

private

。。。。。。。。。。。。。

procedure tvOrdersDataControllerSummaryAfterSummary( ASender: TcxDataSummary); 。。。。。。

procedure Tfyfx_lw_win.init(title: string);//窗体初始代码 var str: string; 。。。。。。

i, j: integer;

ASummary: TcxDataSummary; AColumn: TcxGridDBColumn; Begin

。。。。。。

ASummary := cxGrid1DBBandedTableView1.DataController.Summary; ASummary.BeginUpdate;

if self.caption='费用分析按人力成本' then begin //要设置百分比的窗体标题 try

//动态添加合计栏项目

for i:=0 to cxGrid1DBBandedTableView1.VisibleColumnCount-1 do begin

if (pos('增减幅度

',cxGrid1DBBandedTableView1.VisibleColumns[i].Caption)>0) or (pos('本期',cxGrid1DBBandedTableView1.VisibleColumns[i].Caption)>0) or (pos('上年同期',cxGrid1DBBandedTableView1.VisibleColumns[i].Caption)>0) then begin

with

TcxGridDBTableSummaryItem(ASummary.FooterSummaryItems.add) do begin try

BeginUpdate; Column :=

TcxGridDBColumn(cxGrid1DBBandedTableView1.VisibleColumns[i]); AColumn := nil;

AColumn :=

TcxGridDBColumn(cxGrid1DBBandedTableView1.VisibleColumns[i]); if Assigned(AColumn) then

FieldName := AColumn.DataBinding.FieldName;

if cxGrid1DBBandedTableView1.VisibleColumns[i].Caption='增减幅度'

then Kind := sknone else

Kind := sksum; position:=spFooter;

finally

EndUpdate; end; end; end; end;

ASummary.OnAfterSummary :=

tvOrdersDataControllerSummaryAfterSummary; end else

ASummary.OnAfterSummary := nil; finally

ASummary.EndUpdate; end;

二、事件定义

procedure Tfyfx_lw_win.tvOrdersDataControllerSummaryAfterSummary( ASender: TcxDataSummary);

var ADataController: TcxGridDBDataController;

AView: TcxGridDBTableView; i,j,k:integer; bqfsg,sqfsg:real; begin

ADataController := TcxGridDBDataController(ASender.DataController); AView := TcxGridDBTableView(ADataController.GridView); for I := 0 to ASender.FooterSummaryItems.Count - 1 do

if (ASender.FooterSummaryItems[I].Kind=sknone) and

(pos('zjfd',TcxGridDBTableSummaryItem(ASender.FooterSummaryItems[I]).FieldName)>0) then begin bqfsg:=0; sqfsg:=0;

k:=strtoint(copy(TcxGridDBTableSummaryItem(ASender.FooterSummaryItems[I]).FieldName,5,1));

for j:=0 to ASender.FooterSummaryItems.Count - 1 do

begin if

(TcxGridDBTableSummaryItem(ASender.FooterSummaryItems[j]).FieldName='bqfs'+inttostr(k)) and (ASender.FooterSummaryValues[j]<>null) then begin

bqfsg:=ASender.FooterSummaryValues[j]; end; if

(TcxGridDBTableSummaryItem(ASender.FooterSummaryItems[j]).FieldName='sntq'+inttostr(k)) and (ASender.FooterSummaryValues[j]<>null) then sqfsg:=ASender.FooterSummaryValues[j]; end;

if (bqfsg<>0) and (sqfsg<>0) then

ASender.FooterSummaryValues[I] :=formatfloat('0.00',(bqfsg-sqfsg)/sqfsg*100)+'%'; end; end;

本文来源:https://www.bwwdw.com/article/3xv7.html

Top