【问题标题】:How to get data for FastReport (Delphi) from an TEdit?如何从 TEdit 获取 FastReport (Delphi) 的数据?
【发布时间】:2019-10-13 16:32:52
【问题描述】:

我使用 FastReport 创建了一个报告,但我知道将数据获取到该报告的唯一方法是从数据库中获取数据,我想从 TEdit 获取数据并且我不想存储任何内容,只需写入TEdit + 单击按钮 (fastreport.preview) + 打印并完成。
我怎样才能做到这一点 ?
请解释一下我是 Delphi 和 FastReport 的新手。

【问题讨论】:

  • 您可以将值添加到内存数据集...

标签: delphi fastreport


【解决方案1】:

您可以使用TfrxReport 组件的OnGetValue 事件,如下所示:

procedure TForm1.frxReport1GetValue(const VarName: string; var Value: Variant);
begin
  if(VarName = 'MyVariable') then
  begin
    Value := Edit1.Text;
  end;
end;

然后你只需要在报表中添加一个备忘录项并将其值设置为[MyVariable]

【讨论】:

  • 优雅的解决方案!谢谢,一直在找时间。
【解决方案2】:

一种可能的方法是在运行时访问TfrxReportTfrxMemoView 组件。请注意,当您没有数据集时,Master Data 波段将不会被打印,因此您应该使用另一个波段。

您可以使用以下代码作为基本示例。只需在您的TfrxReport 组件上放置一个TfrxReportTitle 带(名为'ReportTitle1')和一个TfrxMemoView 文本对象(名为'Memo1')。

procedure TfrmMain.btnReportClick(Sender: TObject);
var
   memo: TfrxMemoView;
   band: TfrxReportTitle;
begin
   // Get the band
   band := (rptDemo.Report.FindObject('ReportTitle1') as TfrxReportTitle);
   // Create a memo
   memo := TfrxMemoView.Create(band);
   memo.CreateUniqueName;
   memo.ParentFont := True;
   memo.Text := edtReport.Text;
   memo.SetBounds(100, 1, 100, 16);
   memo.HAlign := haLeft;
   memo.AutoWidth := False;
   // Use existing memo
   memo := (rptDemo.Report.FindObject('Memo1') as TfrxMemoView);
   memo.Text := edtReport.Text;
   // Preview report
   rptDemo.ShowReport(False);
end;

注意:这是一个工作示例,使用 FastReport 4.7 进行了测试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多