148 lines
5.6 KiB
ObjectPascal
148 lines
5.6 KiB
ObjectPascal
unit U_CxGridSet;
|
||
interface
|
||
uses
|
||
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
||
Dialogs,cxGridCustomView, cxGridCustomTableView, cxGridTableView,cxCustomData,
|
||
cxGridDBTableView, cxGrid, BtnEdit, StdCtrls, ExtCtrls, ComCtrls, ToolWin,
|
||
cxGridBandedTableView, cxGridDBBandedTableView;
|
||
|
||
procedure ReadCxGrid(fileName:string;cxgrid:TcxGridDBTableView;filePack:string='公用');
|
||
procedure ReadCxBandedGrid(fileName:string;cxgrid:TcxGridDBBandedTableView;filePack:string='公用');
|
||
procedure WriteCxGrid(fileName:string;cxgrid:TcxGridDBTableView;filePack:string='公用');
|
||
procedure WriteCxBandedGrid(fileName:string;cxgrid:TcxGridDBBandedTableView;filePack:string='公用');
|
||
procedure CreateGroupSummarry(tv1:TcxGridDBTableView);
|
||
implementation
|
||
|
||
///////////////////////////////////////////////////////////////
|
||
//函数功能:从文件中读取cxGridCol设置
|
||
//fileName 推荐为窗口的caption名字caption名字
|
||
///////////////////////////////////////////////////////////////
|
||
procedure ReadCxGrid(fileName:string;cxgrid:TcxGridDBTableView;filePack:string='公用');
|
||
var
|
||
mFileName:string;
|
||
begin
|
||
mFileName := ExtractFilePath(Application.ExeName)+'Layout\' +filePack+'\'+trim(fileName)+ '.dbg';
|
||
//从布局文件中恢复
|
||
if FileExists(mFileName) then
|
||
cxgrid.RestoreFromIniFile(mFileName);
|
||
CreateGroupSummarry(cxgrid);
|
||
end;
|
||
///////////////////////////////////////////////////////////////
|
||
//函数功能:从文件中读取cxGridCol设置
|
||
//fileName 推荐为窗口的caption名字caption名字
|
||
///////////////////////////////////////////////////////////////
|
||
procedure ReadCxBandedGrid(fileName:string;cxgrid:TcxGridDBBandedTableView;filePack:string='公用');
|
||
var
|
||
mFileName:string;
|
||
begin
|
||
mFileName := ExtractFilePath(Application.ExeName)+'Layout\' +filePack+'\'+trim(fileName)+ '.dbg';
|
||
//从布局文件中恢复
|
||
if FileExists(mFileName) then
|
||
cxgrid.RestoreFromIniFile(mFileName);
|
||
end;
|
||
///////////////////////////////////////////////////////////////
|
||
//函数功能:写cxGridCol设置到.dbg文件中
|
||
//默认推荐为窗口的caption名字
|
||
///////////////////////////////////////////////////////////////
|
||
procedure WriteCxGrid(fileName:string;cxgrid:TcxGridDBTableView;filePack:string='公用');
|
||
var
|
||
mFileName:string;
|
||
begin
|
||
mFileName := ExtractFilePath(Application.ExeName)+'Layout\' +filePack+'\'+trim(fileName)+ '.dbg';
|
||
if not DirectoryExists(ExtractFileDir(mFileName)) then
|
||
CreateDir(ExtractFileDir(mFileName));
|
||
//保存为布局文件
|
||
cxgrid.StoreToIniFile(mFileName);
|
||
|
||
end;
|
||
///////////////////////////////////////////////////////////////
|
||
//函数功能:写cxGridCol设置到.dbg文件中
|
||
//默认推荐为窗口的caption名字
|
||
///////////////////////////////////////////////////////////////
|
||
procedure WriteCxBandedGrid(fileName:string;cxgrid:TcxGridDBBandedTableView;filePack:string='公用');
|
||
var
|
||
mFileName:string;
|
||
begin
|
||
mFileName := ExtractFilePath(Application.ExeName)+'Layout\' +filePack+'\'+trim(fileName)+ '.dbg';
|
||
if not DirectoryExists(ExtractFileDir(mFileName)) then
|
||
CreateDir(ExtractFileDir(mFileName));
|
||
//保存为布局文件
|
||
cxgrid.StoreToIniFile(mFileName);
|
||
end;
|
||
/////////////////////////////////////////////////////
|
||
//函数:创建汇总列
|
||
/////////////////////////////////////////////////////
|
||
procedure CreateGroupSummarry(tv1:TcxGridDBTableView);
|
||
var
|
||
csg : TcxDataSummaryGroup;
|
||
csglink : TcxDataSummaryGroupItemLink;
|
||
csgItem : TcxDataSummaryItem;
|
||
i:integer;
|
||
mFieldName:string;
|
||
begin
|
||
///创建汇总列
|
||
with tv1.DataController.Summary do
|
||
begin
|
||
try
|
||
csg := DataController.Summary.SummaryGroups.Add; //创建汇总项
|
||
|
||
csg.Links.Clear;
|
||
for i:= 0 to tv1.ColumnCount -1 do
|
||
begin
|
||
if not tv1.Columns[i].Visible then continue;
|
||
mFieldName:=tv1.Columns[i].DataBinding.FieldName;
|
||
|
||
if tv1.Columns[i].Summary.FooterKind=skSum then
|
||
begin
|
||
// (tv1.DataController.DataSet.Fields[i] as TNumericField).DisplayFormat := '#,0.00;-#,0.00;#';
|
||
//tv1.Columns[i].Summary.FooterFormat:='0.0';
|
||
//tv1.Columns[i].Summary.FooterKind := skSum;
|
||
|
||
//这个与Group Row上的汇总同时使用时好象只能有一个有效
|
||
//创建行分组行上的汇总项
|
||
|
||
csgitem := csg.SummaryItems.Add;
|
||
csgitem.ItemLink := tv1.Columns[i]; //汇总字段1
|
||
csgitem.Position :=spGroup;
|
||
csgitem.Kind := skSum;
|
||
csgItem.Format := trim(tv1.Columns[i].Caption) +'小计=#,0.0';
|
||
|
||
tv1.Columns[i].Summary.GroupFooterKind := skSum;
|
||
tv1.Columns[i].Summary.GroupFooterFormat := '#,0.00';
|
||
|
||
end
|
||
else if tv1.Columns[i].Summary.FooterKind=skCount then
|
||
begin
|
||
// (tv1.DataController.DataSet.Fields[i] as TNumericField).DisplayFormat := '#,0.00;-#,0.00;#';
|
||
//tv1.Columns[i].Summary.FooterFormat:='0.0';
|
||
tv1.Columns[i].Summary.FooterKind := skCount;
|
||
|
||
tv1.Columns[i].Summary.GroupFooterKind := skCount;
|
||
|
||
//tv1.Columns[i].Summary.GroupFooterFormat := '#,0.00';
|
||
//这个与Group Row上的汇总同时使用时好象只能有一个有效
|
||
//创建行分组行上的汇总项
|
||
csgitem := csg.SummaryItems.Add;
|
||
csgitem.ItemLink := tv1.Columns[i]; //汇总字段1
|
||
csgitem.Kind := skCount;
|
||
//csgItem.Format := '小计=#,0.0';
|
||
|
||
end
|
||
else
|
||
begin
|
||
csglink := csg.Links.Add;
|
||
csglink.ItemLink := tv1.Columns[i]; //分类字段
|
||
//所有不参与汇总的列都有可能用来分组,必须将这些列加入到
|
||
//SummaryGroupItemLink中,没有加入该连接的列用来分组时
|
||
//汇总值不会显示
|
||
end;
|
||
|
||
end;
|
||
finally
|
||
end;
|
||
end;
|
||
|
||
end;
|
||
|
||
end.
|
||
|