2

我使用 FastReport(评估版)主要是打印发票和报价单。我试图保持我的数据源和应用程序逻辑之间的分离,所以我想知道是否有一种简单的方法可以将 Delphi 对象直接公开给 FastReport。目前,我正在使用自定义数据源,但这需要大量手动操作。

基本上,我想使用我已经实例化的 TInvoice 对象并使用 FastReport 打印它。

有没有人实现了一个共同的祖先类或接口来将 Delphi 对象作为数据源公开给 FastReport(或其他报告工具)?

编辑:我正在使用 Delphi XE。

4

2 回答 2

9

使用 Delphi 2010 或更高版本,您可以使用此处的代码:

http://code.google.com/p/robstechcorner/source/browse/branches/rttiwork/ObjDS.pas

它可以通过以下方式使用:

//typically created and declared someplace else
cds : TClientDataSet; 
Invoice : TInvoice;

var
  Mapper : TDataSetMapping;
begin
  Mapper := TDataSetMapping.Create(cds);
  Mapper.Value := Invoice;
  // CDS is now populated with the values stored in Invoice
end; 
于 2011-01-19T20:01:15.417 回答
0

如果你正在寻找付费的,我有东西给你。支持简单类型、内存流类作为备忘录字段和子对象。从 delphi 7 和 xe 工作。低于自然的东西。也可以使用绑定进行编辑

{$M+}
TSubInfo = class
publish
  property AMem: TMemoryStream read ... write ....
  property ADat: TDateTime read ... write ....
end;

TInvoice = class
publish
  property AInt: Integer read ... write ...
  property AStr: string read ... write ...
  property ASubInfo: TSubInfo read ... write ...
end;
{$M-}

var
  DataSet: TObjectDataSet; // is decendent from TDataSet
  Invoice: TInvoice;
begin
  Invoice := TInvoice.Create...
  DataSet := TObjectDataSet.Create...;
  DataSet.BindObject := Invoice;
  DataSet.Active := True;
  .....

在 hotmail dot com 以 apz28 身份与我联系

于 2011-01-19T22:50:17.810 回答