2011-01-19 4 views
2

私は主に請求書と引用符を印刷するためにFastReport(評価版)を使用しています。私はデータソースとアプリケーションロジックの分離を維持しようとしていますので、DelphiオブジェクトをFastReportに直接公開する簡単な方法があるかどうかは疑問です。現在、私はカスタムデータソースに頼っていますが、これは多くの手作業による手抜きです。Fastreportにオブジェクトを公開する

基本的に、私はすでにインスタンス化されたTInvoiceオブジェクトを取り出し、FastReportを使用して印刷したいと考えています。

データソースとしてDelphiオブジェクトをFastReport(または別のレポートツール)に公開するために共通の祖先クラスまたはインタフェースを実装した人はいますか?

編集:私はDelphi XEを使用しています。それは次のように使用することができます

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

:あなたがここにあるコードを使用することができますデルファイ2010またはそれ以降のバージョンを使用して

+2

は何デルファイのバージョン、私は新しいRTTIを使用しています2010年のために何かを持っているのhotmailドットコムでも、編集のためにapz28として

{$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; ..... 

連絡先に私を結合に使用することができます。 –

+0

右 - 私はDelphi XEを使用しています。 –

答えて

9

あなたが支払った1を探している場合

//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; 
+1

Ooo ...これはとても素晴らしいです!私は前にそのライブラリに気付かなかったことに驚いています。 –

+0

音が魅力的です - コレクションの取り扱い方法を知っていますか? –

+0

オブジェクトがFOR INループに指定されたGetEnumeratorを実装する場合、リストのメンバーがデータセットの個々の行としてロードされます。 –

0

、私はあなたのために何かを持っています。 シンプルタイプ、メモフィールドとしてのmemorystreamクラス、およびサブオブジェクトをサポートします。 delphi 7とxeから作業します。自然の下の何か。

+0

いいえ、私はありません。そのうえ、誰かにホットメールアドレスであなたに連絡するように依頼することは、ビジネスをする最良の方法ではありません。オファーをありがとう、考えました。 –

関連する問題