RM(レポートマシン)は、強力なDelphiレポート制御パッケージです。それを使用して、非常に複雑なレポートを作成します。最も単純な使用法については、以下で説明します。
フォームに2つのデータベースコントロールを配置します:AdoconnectionとAdoqueryは、Adoconnectionの接続ストリングをセットアップします。 loginprompt = false。養食器の接続はAdoConnectionを指します。養食器のSQLは、データクエリステートメントを設定します。
フォームに2つのRMレポートコントロールを配置します:RMDBDATASETとRMREPORT。 RMDBDATASETのデータセットは養食器を指しています。 rmReportのデータセットは、rmdbdatasetを指します。
(最終生成されたアプリケーションがレポート設計機能を持たせる場合は、RMDesignerコントロールを配置し、属性を設定しない必要があります)
RMREPORTコントロールをダブルクリックして、レポートテンプレートの設計を開始します。
一般的にルールと比較されるレポートの場合、テンプレートに4つのバンドオブジェクトを追加する必要があります:1)、ページヘッダー:通常、レポート名、時間などを表示するために使用されます。2)、メインアイテムヘッダー:通常は列名を表示します。 3)メインアイテムデータ:データの表示に使用されます。 4)ページ脚注:ページ番号、日付などを表示するために使用されます。
設計されたテンプレートは、DFMまたは拡張機能RMFを備えた独立したテンプレートファイルに保存し、実行時に呼び出されます。ここにいくつかのコードスニペットがあります:
procedure TBrowseForm.Button5Click(Sender: TObject);varRMReport:TRMReport;beginif ADOQuery1.IsEmpty thenExit;tryRMReport := TRMReport.Create(Self);RMReport.LoadFromFile('Match.rmf');RMReport.PrepareReport;RMReport.ShowReport; finallyRMReport .free; end; end;
手順tform1.button1click(sender:tobject);
//テンプレート手順tform1.button2click(sender:tobject);
ほとんどのルールレポートでは、上記の知識で十分です。しかし、これはRMを使用する最も簡単な方法であり、RM関数の力を反映することにはほど遠いものです。
RMには、現在最も必要な2つの魅力的な機能があります。
1)データは、ファイル、メモリなど、データベースまたは他のどこからでも届きます。 2)実行時にコードを介してテンプレートを事前に作成する必要はありません。これは、データ内のフィールドの数が不確実な状況に非常に役立ちます。
RMは強力ですが、使用するのは複雑ではありません。
1.紙の2つの側面を必要とするレポートに対するあなたの良い解決策は何ですか?印刷時に奇数またはページを入力することを選択できます。 2。最後のページが十分に記録されていない場合、1ページに固定された数字を印刷するにはどうすればよいですか?レポートをクリックして、デザインレポートインターフェイスを入力しますか? rmreport1.modifyprepared:= false4。レポートにパラメーターを渡すTrmmemoviewを実行する方法は? rmreport1.findobject( 'memo1')。memo.text:= 'ddddd'またはrmvariables ['a1']:= 'ddddd'; 6.複製コンテンツを印刷できないにはどうすればよいですか? Suppres = true7の印刷時にダブルクリックする方法レポートエディターに入ることができません。 rmreport.modifypreview = false8を設定します。メモの境界線がレポートプログラムでDelphiに表示されるかどうかを制御します。 .bottomframe .visible:= falseのscript memo1.frametyp:= 15;ページを制御してくださいメインアイテムデータ列を設定する3行ごとのテーブル:linesperpage = 3の場合、3人の1行までの方法があります。メインアイテムデータ列の列を設定します= 3グループ化条件、グループ化条件:nowline> 3 onbeforeprint :beginnowline:= 1; end beforeprint:= nowline + 1; end; 11。はい、メインアイテムのデータ列を設定します:visible = false統計ボックス:calcnovisible = true12のみを折ります。はい、テキストボックスを設定します= true = trueテキストボックスが配置されています。 // RMREPORT1.SHOWREPORTを参照してください。 2。グループヘッダーが各グループのページを変更するかどうか。 1.RMREPORT1.PAGES [0] .ChangePaper()2.RMReport1.Pages [0] .FindObject(グループヘッダー列名).Prop ['NewPage']:= false; 15。 rmreport1.showprintdialog:= false; rmreport1.printreport; 16。ページ設定またはrmreport1.pagesのズームを選択する必要はありません。pgmargins:=; rithedit1.lines.savetostream(tempstream); tempstream.position:= 0; rmformreport1.pageheader.caption.loadfromstream(tempstream.freem.free; end; 18。 TrmdesignerのTemplatedir19を設定します。 (rmreport1.findobject( 'band1')as trmbandview)= 'rmdbdataset1'; 20で['aaa']:= form1.caption。左の距離:CurrePort.Pages [0] .pgmargins.Left:= round(rmconvertTopixels(mm*10、rmsumm))22.rmvariables ['brand']:= true; rmvariables ['product name']:= 'computer' ' ; Page1のコードは次のとおりです。メインアイテムデータ列lineperpage = 1024。 ? ?列の脚注列を使用して、統計ボックスを置いてから、Calctype 25を設定するのが最善です。レポートを動的に生成するとき、RMのページマージンを設定する方法は? 40)26。プレビューまたは印刷ウィンドウで、複数のレポートファイルを一度に開く方法trmcompositerport 1.Reports.add(rmreport1)を使用します。 rmcompositereport1.reports.add(rmreport2); rmcompositereport1.rmはい、A3コンテンツ[MEMO1.CALCVALUE + MEMO2.CALCVALUE] 29を使用し、レポートのヘッダー、グループヘッダー、および列ヘッダーを2回選択する必要があります。そして、[2002] beginmemo: '['、 ']'などのブラケットを印刷する方法[';
rmvariables ['a2'
レポートマシン開発ユーザーマニュアル - レポートの作成2010-02-10 13:08
レポートを作成します:
レポートの作成は、次の手順で構成されています。
1.データを選択:レポートで使用されるデータソースを選択します
2。デザインレポートテンプレート:エリア(バンドと呼ばれる)を使用して、レポートのさまざまな部分を配布してレポートスタイルを決定します。
3。処理:レポートの組み込みスクリプト言語を使用するか、データ、レポートテンプレートなどを処理します。Delphiのレポートで使用されます。
4。レポートの生成:レポートテンプレート +データソースに基づいて最終レポートを生成します。
データソースを選択します:
ほとんどのレポートに必要なデータは、データベースからのものです。 TtableおよびTqueryコンポーネントは、レポートのデータソースとして機能します。一般に、TDATASETコンポーネントから継承されたサブクラスを使用できます。各レポートで使用されるTDATASETには、対応するTRMDBDATASETが必要です。
TDATASETに加えて、ReportMachineページは任意のデータソース(配列、ファイル、文字グリッドなど)を使用できます。この場合、プログラムは、非データベースソースのアクセス自体を制御する必要があります。 Trmuserdatasetを使用して、データを簡単にレポートに転送できます。
デザインレポートテンプレート:
レポートテンプレート自体では、正しいレポートを表示する方法について説明します。各レポートテンプレートは複数の領域で構成されており、ReportMachineはバンドを呼び出します。バンドには、固定エリアバンド(レポートタイトル、ページヘッダー、ページの脚注など)と、データセット内のすべてのレコードを表示するために使用されるバンド(メインアイテムデータ列など)の2つのタイプがあります。データバンドはデータソースに接続する必要があり、コンテンツはデータソースのレコードです。
ReportMachineは、レポート開発のための視覚環境を提供します(レポートデザイナー。これは、エンドユーザーにも提供して、自分でレポートテンプレートを変更できるようにエンドユーザーを促進することもできます)。レポートデザイナーは、パワフルでシンプルで使いやすいです。レポートデザイナーインターフェイスは、オブジェクトのプロパティを自由に変更できるフローティングツールバーで構成されています。
対処する:
レポートを生成する場合、入力データ(フォーマットなど)を処理する必要があり、レポートテンプレートを変更する必要があります(レポートテンプレートのテキストボックスなど、フォントを変更する必要があります)。
この処理を実装すると、DelphiのTRMREPORTのイベント処理でコードを作成できます。これが、ReportMachinetに組み込まれたスクリプト言語が、ReportMachineの組み込みスクリプト言語であり、オブジェクトPascalに非常に似ており、強力である理由です。このスクリプト言語でイベント処理コードを作成すると、レポートデザイナーと共同で複雑な処理を作成できます。レポートを変更してプロジェクトを再コンパイルする必要はありません。それはあなたのプロジェクトからレポートを分離することができます。
レポートスクリプトの例:
ユニットレポート;
インタフェース
手順memo1onbeforeprint(sender:tobject);
手順memo1onbeforeprint(sender:tobject);
手順メイン
終わり;
終わり。
レポートを生成します:
レポートの生成は、ReportMachineがレポートテンプレートに従ってデータソースを処理して最終レポートを生成するプロセスであり、「プレビュー」ボタンをクリックした後にプレビューできます。 ReportMachineで作成されたレポートは、レポートの処理後に各ページに含まれるコンテンツを説明するオブジェクトのコレクションです。これにより、デザイナーの目的のページを呼び出すことにより、生成されたレポートページを変更できます。さらに、プレビューウィンドウのオブジェクトをクリックするマウスの反応も説明できます。これにより、作業を整理しやすくなります(レポートオブジェクトをクリックすると、より詳細な新しいレポートが作成される可能性があります)。
ReportMachineのプレビューウィンドウは、Microsoft Wordに似ています。複数のページを1つのウィンドウに表示でき、必要に応じてデラッグしてエディターを表示して現在のページを変更できます。