FastReport使用交流,FastReport中国社区FastReport联系电话 联系电话:17347785263

使用FastReport VCL快速创建交互式报表指南

来源:   发布时间:2021-04-25   浏览:次

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

近日,FastReport VCL更新至v6.9,在新版本中,在PDF导出中增加了对以下对象的交互式表单支持:文本,复选框和图片。能够通过InteractiveFormsFontSubset属性将所需的字形仅包含在交互式形式中。同时修复了多个Bug问题。欢迎下载体验。(点击下方按钮下载)

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

在交互式报表中,可以定义对鼠标单击预览窗口中任何报表对象的反应。例如,用户可以单击数据行,从而运行包含所选行的详细数据的新报告。

任何报告都可以互动。为此,您只需要创建一个TfrxReport.OnClickObject事件处理程序。以下是此处理程序的代码示例:

Pascal:

procedure TForm1.frxReport1ClickObject(Page: TfrxPage; View: TfrxView;
  Button: TMouseButton; Shift: TShiftState; var Modified: Boolean);
begin
  if View.Name = 'Memo1' then
    ShowMessage('Memo1 contents:' + #13#10 + TfrxMemoView(View).Text);
  if View.Name = 'Memo2' then
  begin
    TfrxMemoView(View).Text := InputBox('Edit', 'Edit Memo2 text:', TfrxMemoView(View).Text);
    Modified := True;
  end;
end;

C ++:

void __fastcall TForm1::frxReport1ClickObject(TfrxView *Sender,
      TMouseButton Button, TShiftState Shift, bool &Modified)
{
  TfrxMemoView * Memo;
  if(Memo =  dynamic_cast <TfrxMemoView *> (Sender))
  {
    if(Memo->Name == "Memo1")
      ShowMessage("Memo1 contents:\n\r" + Memo->Text);
    if(Memo->Name == "Memo2")
    {
      Memo->Text = InputBox("Edit", "Edit Memo2 text:", Memo->Text);
       Modified = true;
    }
  }
}

在OnClickObject处理程序中,您可以执行以下操作:

  • 修改传递给处理程序的对象或页面的内容(因此,应指定“ Modified”标志,以便将修改内容考虑在内);
  • 调用TfrxReport.PrepareReport用于重建/重建报告的方法。

在此示例中,单击名称为“ Memo1”的对象将显示一条包含该对象内容的消息。单击《备忘录2》时,会显示一个对话框,可以在此修改该对象的内容。将«Modified»标记设置为«True»可以保留和显示更改。

同样,可以为点击定义不同的反应。例如,它可以运行新报告。有必要注意以下几点。一个TfrxReport组件只能在预览窗口中显示一个报告。这就是为什么应该在单独的TfrxReport对象中或在同一对象中运行报表,但是必须删除当前报表的原因。

为了向最终用户提供有关可点击对象的提示,我们可以在鼠标光标经过预览窗口中的可点击对象时对其进行修改。为此,请在报表设计器中选择所需的对象,并将其cursor属性设置为crDefault以外的其他值。

另一个细节涉及定义可点击对象。在简单的报表中,可以在对象的名称或其内容中定义它。但是,这并不总是在更复杂的情况下执行。例如,应在选定的数据行中创建详细的报告。用户单击内容为“ 12”的«Memo1»对象。该对象指的是什么数据线?这就是为什么您应该知道主键,它清楚地标识了这一行的原因。FastReport可以为每个报表的对象分配一个字符串,其中包含任何数据(在本例中为主键的数据)。此字符串存储在TagStr属性中。

让我们通过一个报告示例来说明此过程,该示例包含在FastReportDemo.exe-“简单列表”演示中。这是公司的客户列表,其中包含诸如“客户名称”,“地址”,“联系人”等数据。数据源是DBDEMOS演示数据库中的“ Customer.db”表。该表具有一个主键,即«CustNo»字段,该字段未在报告中显示。我们的任务是通过单击完成的报告中的任何对象来确定其引用的记录,这意味着获取主键的值。为此,只需TagStr在“主数据”区域中的所有对象的属性中输入以下值:

[Customers."CustNo"]

在报表的构建过程中,TagStr属性的内容的计算方法与文本对象的内容计算方法相同;这意味着将用变量的值代替所有变量。在这种特殊情况下,变量是括在方括号中的变量。这就是为什么TagStr在创建报表后,“ 1005”,“ 2112”等类型的行将包含在主数据上的对象的属性中的原因。从字符串到整数的简单转换将为我们提供主键的值,通过它可以找到所需的记录。

如果主键是复合键(即它包含多个字段),则TagStr属性的内容可以如下:

[Table1."Field1"];[Table1."Field2"]

构造报告后,该TagStr属性包含“ 1000; 1”类型的值,从中获取键的值也不难。


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

还想要更多吗?您可以点击阅读【FastReport 报表2020最新资源盘点】,查找需要的教程资源。让人兴奋的是FastReport .NET正在慧都网火热销售中!在线订购惠享超低折扣。>>查看价格详情

本站文章除注明转载外,均为本站原创或翻译
欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果
转载请注明:文章转载自:FastReport控件中文网 [https://www.fastreportcn.com/]
本文地址:https://www.fastreportcn.com/post/3009.html

联系我们
  • 重庆总部 17347785263
购买
  • sales@evget.com
合作
  • business@evget.com


在线
客服
在线
QQ
电话
咨询
023-68661681
返回
顶部