关于dxDBGrid 动态创建表及列,客户端自定义整列汇总,分组汇总

hduhjh 2009-03-19 11:00:23
表格创建预计分成:表头和表身.
表头:保存各模块的表信息及需要用于做查询的SQL语句.
表身:保存各表的用于动态创建各列(Caption,ColIndex等)信息,以及各列的默认汇总方式和格式

需要实现的功能:
1.根据表头动态创建dxDBGrid,ADOQuery,DataSoure
2.根据表身动态创建dxDBGrid列,设置默认整列汇总
3.客户自定义实现PopupMenu控制整列汇总,分组汇总

最好有针对性的Demo(除dxDBGrid 不存在其他第三方控件)
...全文
473 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
hduhjh 2009-03-20
  • 打赏
  • 举报
回复
没搞错吧```怎么没人知道的````
hduhjh 2009-03-19
  • 打赏
  • 举报
回复
顶上去~
hduhjh 2009-03-19
  • 打赏
  • 举报
回复
整列汇总还好说,列好抓,改改列的就好了,分组汇总就麻烦了
bdmh 2009-03-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 hduhjh 的回复:]
嗯,很清晰,非常感谢
重点在第3步,另外需注意的是汇总包括(Avg,Sum,Max等).
在第3步时候就需要判断当前列的类型是否允许做相应的汇总(比如字符类型肯定不能做Avg)
[/Quote]

对着呢,可以根据字段类型判断
hduhjh 2009-03-19
  • 打赏
  • 举报
回复
嗯,很清晰,非常感谢
重点在第3步,另外需注意的是汇总包括(Avg,Sum,Max等).
在第3步时候就需要判断当前列的类型是否允许做相应的汇总(比如字符类型肯定不能做Avg)
bdmh 2009-03-19
  • 打赏
  • 举报
回复

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, dxExEdtr, dxCntner, dxTL, dxDBCtrl, dxDBGrid, StdCtrls,ADODB,DB;

type
TForm1 = class(TForm)
Button1: TButton;
dxDBGrid1: TdxDBGrid;
dxDBGrid1Column1: TdxDBGridColumn;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
FGrid:TdxDBGrid;
FQuuery:TADOQuery;
FDataSource:TDataSource;
procedure CreateControl;
procedure CreateGrid;
procedure CreateCol(colCaption,colName,colField:string;colWidth:Integer);
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

{ TForm1 }

procedure TForm1.CreateGrid; //创建dxDBGrid
begin
FGrid := TdxDBGrid.Create(Self);
FGrid.Parent := Self;
FGrid.Width := Self.Width;
FGrid.Height := 500;
FGrid.OptionsDB ;= FGrid.OptionsDB + [edgoLoadAllRecords]; //用于列汇总
FGrid.ShowSummaryFooter := True;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
CreateGrid;
end;

procedure TForm1.CreateControl;
begin
FQuuery := TADOQuery.Create(nil);
//FQuuery.Connection := 你的链接
FDataSource := TDataSource.Create(nil);
FDataSource.DataSet := FQuuery;
CreateGrid;
FGrid.DataSource := FDataSource;
end;

//读取相关信息,循环调用此方法创建列
procedure TForm1.CreateCol(colCaption,colName,colField:string; colWidth: Integer);
var
col : TdxDBTreeListColumn;
begin
col := FGrid.CreateColumn(TdxDBTreeListColumn);
col.Caption := colCaption;
col.Name := colName;
col.FieldName := colField;
col.Width := colWidth;
//如果此列需要汇总
col.SummaryFooterField := colField;
col.SummaryFooterFormat := '合计:0.00';
end;

end.

hduhjh 2009-03-19
  • 打赏
  • 举报
回复
UP~
hduhjh 2009-03-19
  • 打赏
  • 举报
回复
Help me```
bdmh 2009-03-19
  • 打赏
  • 举报
回复
继续
hduhjh 2009-03-19
  • 打赏
  • 举报
回复
高手```

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧