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 に答える