字段名、字段数不确定时,用 FastReport 动态生成报表


 放置有效地Table和DataSource,frxReport 和 frxDBDataSet,不需要再报表设计器内放置任何控件,直接由代码生成报表。

 但如果是交叉表,FastReport 也提供另外一种解决方案 TfrxCrossView 进行列表

 以下是全代码生成报表的简单例子。


 TfrxDataPage * DataPage;
 TfrxReportPage * Page;
 TfrxBand * Band;

 TfrxMasterData * DataBand;
 TfrxMemoView * Memo;

 

 // 清除原报表内容
 frxReport1->Clear();

 

 // 设置 Report 的 DataSet
 frxReport1->DataSets->Add(frxDBDataset1);


 // 添加 Report 的 Data 页
 DataPage = new TfrxDataPage(frxReport1);

 

 // 增加报表显示内容
 Page = new TfrxReportPage(frxReport1);
 Page->CreateUniqueName();


 // 设置 Fields 的默认尺寸
 Page->SetDefaults();


 // 页面方向
 Page->Orientation = poLandscape;

 // 页面边距

 Page->TopMargin = 20;
 Page->LeftMargin = 20;
 Page->TopMargin = 20;
 Page->BottomMargin = 20;

 

 // 创建报表 Title Band
 Band = new TfrxReportTitle(Page);
 Band->CreateUniqueName();

 Band->Top = 0;
 Band->Height = 20;

 

 // 创建显示 Field 的 Memo
 Memo = new TfrxMemoView(Band);
 Memo->CreateUniqueName();
 Memo->Text = "Hello FastReport!";
 Memo->Height = 20;


 // 风格
 Memo->Align = baWidth;

 

 // 创建 DataBand
 DataBand = new TfrxMasterData(Page);
 DataBand->CreateUniqueName();
 DataBand->DataSet = frxDBDataset1;

 DataBand->Top = 100;
 DataBand->Height = 20;

 

 // 将 Memo 添加到 DataBand 上
 Memo = new TfrxMemoView(DataBand);
 Memo->CreateUniqueName();


 // 连接数据
 Memo->DataSet = frxDBDataset1;

 // 显示 username 字段
 Memo->DataField = "username";
 Memo->SetBounds(0, 0, 100, 20);

 // memo 带边框

 Memo->Frame->Typ << ftLeft << ftRight << ftTop << ftBottom;


 // 风格
 Memo->HAlign = haRight;


 // 报表显示
 frxReport1->ShowReport(true);

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值