彩票走势图

FastReport VCL程序员手册:通过代码创建报告表单

翻译|使用教程|编辑:杨鹏连|2021-04-20 10:03:09.377|阅读 129 次

概述:通常情况下,使用设计器可以创建大多数报告。但是,在某些情况下(例如,当报告的表单未知时),有必要通过代码手动创建报告。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

相关链接:

FastReport VCL是用于 Delphi,C++ Builder,RAD Studio 和 Lazarus 的报告和文档创建 VCL 库。它提供了可视化的海网模板设计器,访问数据源,报告引擎,预览,将过滤器导出为 30 多种格式,并可以部署到云,Web,电子邮件和打印中。

牛仔,F FontReport VCL 更新至 VCL 中版本 6.9,在 PDF 中导出了对以下对象的新增字体图片支持:文本表格活动子集属性将包含在。形式形式中。同时修复了多个Bug问题。欢迎下载体验。(点击下方按钮下载)

立即点击下载FastReport VCL v6.9最新版

通常,您将使用设计器创建大多数报告。但是,在某些情况下(例如,当报告的表单未知时),有通过代码手动创建报告。

要手动创建报告,应按顺序执行以下步骤:

  • 清除报告组件
  • 添加数据源
  • 添加“数据”页面
  • 添加报告页面
  • 在页面上添加乐队
  • 设置频段的属性,然后将其连接到数据
  • 在每个频率上添加对象
  • 设置对象的属性,然后将它们连接到数据
让我们检查一下“列表”类型的报告的创建。假设我们有以下简单的组件:frxReport1:TfrxReport和frxDBDataSet1:TfrxDBDataSet(最后一个连接到DBDEMOS的数据,«Customer.db»)。页带有“报告标题”和“主数据”带的页面。在“报告标题”区域中,将出现一个“Hello FastReport!”的对象。文本,“主数据”将包含一个对象,该对象具有指向“CustNo”字段的链接。
帕斯卡尔:
无功 数据页:TfrxDataPage; 页面:TfrxReportPage; 频段:TfrxBand; 数据带:TfrxMasterData; 备忘录:TfrxMemoView;  {清除报告} frxReport1.清除;  { 将数据集添加到报表可访问的列表中 } frxReport1.DataSets.Add(frxDBDataSet1);  { 添加“数据”页面 } 数据页:= TfrxDataPage.Create(frxReport1);  { 添加页面 } 页 := TfrxReportPage.Create(frxReport1);  { 创建一个唯一的名称 } Page.CreateUniqueName;  { 默认设置字段、纸张和方向的大小} Page.SetDefaults;  { 修改纸张方向 } Page.Orientation := poLandscape;  { 添加报告标题带} Band := TfrxReportTitle.Create(Page); Band.CreateUniqueName;  { 为一个带设置 «Top» 坐标和高度就足够了 } { 两个坐标都以像素为单位 } Band.Top := 0; 带.高度:= 20;  { 向报表标题带添加对象 } 备忘录:= TfrxMemoView.Create(Band); Memo.CreateUniqueName; Memo.Text := 'Hello FastReport!'; 备注.高度:= 20;  { 此对象将根据带的宽度进行拉伸 } Memo.Align := baWidth;  { 添加主数据带 } DataBand := TfrxMasterData.Create(Page); DataBand.CreateUniqueName; DataBand.DataSet := frxDBDataSet1;  {顶部坐标应该大于之前添加的band的顶部+高度} DataBand.Top := 100; 数据带高度:= 20;  { 在主数据上添加一个对象 } 备忘录:= TfrxMemoView.Create(DataBand); Memo.CreateUniqueName;  { 连接到数据 } Memo.DataSet := frxDBDataSet1; Memo.DataField := 'CustNo'; Memo.SetBounds(0, 0, 100, 20);  { 将文本调整到右侧对象的边距 } Memo.HAlign := haRight;  { 显示报告 } frxReport1.ShowReport;
C++:


TfrxDataPage * 数据页; TfrxReportPage * 页; TfrxBand * 频段; TfrxMasterData * 数据带; TfrxMemoView * 备忘录;  // 清除报告  frxReport1->清除();  // 将数据集添加到报表可访问的数据集列表中  frxReport1->DataSets->Add(frxDBDataset1);  // 添加“数据”页面  DataPage = new TfrxDataPage(frxReport1);  // 添加一个页面 页 = 新 TfrxReportPage(frxReport1);  // 创建一个唯一的名称  页面->CreateUniqueName();  // 默认设置字段、纸张和方向的大小  页面->SetDefaults();  // 修改纸的方向 页面->方向= poLandscape;  // 添加报表标题带 Band = new TfrxReportTitle(Page); 乐队-> CreateUniqueName();  // 为波段设置«顶部»坐标和高度就足够了  // 两个坐标都以像素为单位  波段->顶部 = 0; 带->高度= 20;  // 添加一个对象到报表标题栏  备忘录 = 新 TfrxMemoView(Band); 备忘录-> CreateUniqueName(); Memo->Text = "Hello FastReport!"; 备注->高度 = 20;  // 此对象将根据带的宽度进行拉伸  备注->对齐 = baWidth;  // 添加主数据带  DataBand = new TfrxMasterData(Page); DataBand->CreateUniqueName(); 数据带->数据集 = frxDBDataset1;  // 顶部坐标应大于先前添加的带的顶部 + 高度 数据带->顶部 = 100; 数据带->高度 = 20;  // 在主数据上添加一个对象  备忘录 = 新 TfrxMemoView(DataBand); 备忘录-> CreateUniqueName();  // 连接数据  备忘录->数据集 = frxDBDataset1; Memo->DataField = "CustNo"; 备忘录->SetBounds(0, 0, 100, 20);  // 将文本调整到右侧对象的边距  备忘录->HAlign = haRight;  // 显示报告  frxReport1->ShowReport(true);
让我们解释一些细节。


必须在报告中使用的所有数据源都必须添加到数据源列表中。在我们的情况下,这是使用

frxReport1.DataSets.Add(frxDBDataSet1)
行,否则,报告将。


对于将内部数据集插入 TfrxADOTable 到报表中,“数据”页面是必需的。外部数据集可以放置在“数据”页面上。

Page.SetDefaults 无需调用,因为在这种情况下页面将具有 4 格式,边距为 0 毫米。SetDefaults 设置为 10 毫米边距,并采用打印机默认具有的页面尺寸和页面页面方式。

在页面上添加区时,应确保它们不会重叠在一起。有多少设置«高度»和坐标图表顶部。修改«左»和«宽度»坐标无用处,带上总是有的其所在页面的宽度(如果是带,则不是您的正确应设置左和宽度属性)。注意是,乐队在页面上的顺序位置非常重要。总是以与应该设计者相同的方式定位乐队。

对象的坐标和大小以像素为单位设置。因为Left,顶部,宽度,和高度所有对象的属性有«扩展»类型,你可以潜在非潜在值。定义了以下常量,用于将像素转换为厘米和英寸:

fr01cm = 3.77953; fr1cm = 37.7953; fr01in = 9.6; fr1in = 96;
例如,可以将带子的高度设置为 5 毫米,如下所示:
Band.Height := fr01cm * 5;  Band.Height := fr1cm * 0.5; 


如果您对FastReport的感兴趣,欢迎加入QQ的FastReport交流群:702295239

还想要更多吗?您可以点击【FastReport 报表2020最新资源盘点】寻找需要的教程资源。换上FastReport .NET正在网都火热中销售!在线订购惠享超低绑定。>>查看价格详情


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn

文章转载自:

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP