2018.04.09 更新
目次
FlexReport for WinForms の概要
5
C1Report から FlexReport へのアップグレード
5-7
FlexReport と C1Report
7-8
C1Report から FlexReport への重要な変更点
8-10
主な特長
11
FlexReport の詳細情報
12
コンポーネントとコントロール
12
オブジェクトモデルの概要
12-14
FlexReport のセクション
14-16
FlexReport クイックスタート
17
手順 1:レポート定義の作成
17-27
手順 2:レポートの修正
27-30
手順
3:C1FlexReport コンポーネントでのレポートのロード
30-31
手順 4:レポートのレンダリング
31-32
設計時サポート
33
[
C1FlexReport のタスク]メニュー
33
[C1FlexViewer のタスク]メニュー
33-34
FlexReport の操作
35-36
C1FlexReport と C1Document
36
C1Document の重要な変更点
36-38
FlexReport のデータ連結
38
データベースからのデータの取得
38-39
ストアドプロシージャからのデータの取得
39-41
データテーブルオブジェクトをデータソースとして使用
41
カスタムデータソースオブジェクトの使用
41-42
FlexReport のデータソース
42
コードを使用した複数のデータソースへの接続
42-43
複数データソースレポートでのチャートへのデータの連結
43-48
複数データソースレポートでのパラメータへのデータの連結
48-49
計算フィールドの定義
49-50
デスクトップ用
FlexReport の開発
50
設計時の
FlexReport のロード
50-51
設計時の
FlexReport の作成
51-52
実行時の FlexReport のロード
52-55
パラメータの追加
55-56
データのグループ化
56-58
小計などの集計の追加
58-61
クロス集計レポートの作成
61-67
データのソート
67-68
データのフィルタ処理
68-69
さまざまな形式へのレポートのエクスポート
69-70
VBScript の操作
70-72
VBScript の要素、オブジェクト、変数
72-76
互換性のための関数:Iif および Format
76-77
集計関数
77-79
FlexReport オブジェクトの分割の管理
79
フィールドの変更
79-80
値に応じたフィールドの書式設定
80-82
データがないセクションの非表示
82-83
値に基づいたフィールドの表示/非表示
83-85
ページカウンタのリセット
85-86
サブセクションの追加
86
FlexReportDesigner の操作
87
FlexReportDesigner について
87-89
[ファイル]メニュー
89-90
設計モード
90-91
[ホーム]タブ
91-95
[挿入]タブ
95-96
[調整]タブ
96-97
[ページ設定]タブ
97
プレビューモード
97-99
FlexReportDesigner オプションの設定
99-104
スタイルギャラリー
104-106
複数のサブセクションの追加
107-108
FlexReport フィールドの追加
108
FlexChart フィールド
108-109
FlexChartフィールドとデータの連結
109-110
FlexChartFieldとFlexChartの違い
110-113
FlexChart フィールドのデータオブジェクトモデル
113
サポートされているチャートタイプ
113-120
グループ化と集計
120-122
FlexChart ナビゲーション
122-123
テキストフィールド
123-124
RTF フィールド
124-125
パラグラフフィールド
125-127
チェックボックスフィールド
127-128
バーコードフィールド
128-129
バーコードシンボル
129-134
バーコードのプロパティ
134-136
計算フィールド
136-138
画像フィールド
138-139
図形フィールド
139
サブレポートフィールド
139-143
レガシーチャートフィールド
143
チャートタイプ
143-149
設計時サポート
149-152
データバインドされたチャートでデータのプロット
152-153
非連結チャートでのデータのプロット
153-155
複数の系列を持つチャート
155-156
グループ化されたレポート内のチャート
156-158
FlexReport カスタムフィールドの追加
158
マップカスタムフィールド
158-159
マップカスタムフィールドのプロパティ
159-162
マップカスタムフィールドの追加
162-165
SuperLabel カスタムフィールド
165-167
パラメータの操作
167-169
データ連結
169-170
計算フィールド
170-171
サブレポート
171-173
パラメータのカスケード
173-175
複数値パラメータ
175-176
パラメータの暗黙的な受け渡し
176
複数のデータソースの追加
176-178
FlexReport のデータソースの変更
178-179
FlexReportDesigner でデータのソート化
179-182
FlexReport のプレビューと印刷
182-183
FlexReportDesigner でのレポートのインポート
183-184
Microsoft Access レポートのインポート
184-187
Crystal Reports のインポート
187-190
レポートのエクスポートと公開
190
PDF/A へのエクスポート
190-191
FlexReports の見栄えの向上
191
背景
191-193
境界線
193-195
レポートおよびドキュメントビューア(
C1FlexViewer コントロール)
196
FlexViewer の主な特長
196
FlexViewer ツールバー
196-197
レポートのビューの回転
198-199
FlexReport と FlexViewer の連結
199-200
タスク別ヘルプ
201
交互表示の背景の追加
201-202
条件付き書式設定の追加
202-204
カスタム用紙サイズの指定
204-205
動的ページヘッダーの追加
205-206
ガターマージンの作成
206-207
グループ化とソート
207-210
カスケードパラメータ
210-212
FlexReport for WinForms の概要
の概要
ComponentOne には、FlexReport for WinForms が導入されています。これは、C1Report を更新して高速化した新しいコ ンポーネントです。
FlexReport は、複雑なレポートの作成からプレビュー、エクスポート、印刷まで、完全なレポートソリューションを提供する包括 的なレポートツールです。FlexReport は、優れたオブジェクトモデルを備え、プレビューコントロールやデザイナアプリケーショ ンとして最新のユーザーインタフェースを提供しています。これを使用して、魅力的で機能豊富なレポートを柔軟に生成できま す。FlexReportコントロールを操作するには、最小限必要なサーバー構成はWindows 7 SP1またはWindows Server 2008 R2 SP1用プラットフォーム更新(KB2670838)です。
データを集約した形式で提示し、レポートを設計およびカスタマイズし、FlexReport によって生成されたレポートに基づいて重 要なビジネス意思決定を行ってください。高品質なレンダリング、正確な計算、使いやすさにより、FlexReport は、基礎レベル のレポート設計者だけでなく上級レベルのレポート設計者にとっても必須のコントロールです。
C1Report から
から
FlexReport へのアップグレード
へのアップグレード
C1Report を使用して作成されたレポートは、C1FlexReport と完全に互換性があります。以下に、既存の C1Report レポー ト定義(.xml)を C1FlexReport レポート定義(.flxr)に簡単にアップグレードまたは変換する 2 つの方法を示します。 デザイナでデザイナで C1Report レポート定義をアップグレードするレポート定義をアップグレードする 1. C1FlexReportDesigner.4.exe を実行します。 2. [ファイル][ファイル]→[開く][開く]に移動し、アップグレードする C1Report レポート定義(.xml)を選択します。次のダイアログボックス が表示されます。 3. [[OK]]をクリックします。 4. [ファイル][ファイル]→[保存][保存]に移動します。 5. [レポート定義ファイルの保存][レポート定義ファイルの保存]ダイアログボックスで、[ファイル名][ファイル名]を指定し、[保存][保存]をクリックします。 レポート定義がタイプ .flxr として保存されます。これで、レポート定義が C1Report の .xml から C1FlexReport の .flxr に変換 されました。
Visual Studio で既存ので既存の C1Report Windows アプリケーションプロジェクトをアプリケーションプロジェクトを FlexReport Windows アプリケーアプリケー ションプロジェクトにアップグレードするションプロジェクトにアップグレードする
1. C1Report(.xml)ファイルを含む既存の Windows アプリケーションプロジェクトを開きます。 2. Form から C1Report を削除します。
3. Form から C1Report のプレビューコントロール C1PrintPreview または C1RibbonPreviewControl を削除します。 4. C1FlexReport コンポーネントをツールボックスツールボックスに追加します。
a. タブを右クリックし、[アイテムの選択][アイテムの選択]を選択します。[ツールボックスアイテムの選択][ツールボックスアイテムの選択]ダイアログボックスが表 示されます。
b. [参照]をクリックし、bin\v4.0 フォルダから C1.Win.FlexReport.4.dll を選択します。C1FlexReport コンポー ネントがツールボックスに追加されます。
5. C1FlexViewer コントロールをツールボックスツールボックスに追加します。
a. タブを右クリックし、[アイテムの選択][アイテムの選択]を選択します。[ツールボックスアイテムの選択][ツールボックスアイテムの選択]ダイアログボックスが表 示されます。
b. [参照]をクリックし、bin\v4.0 フォルダから C1.Win.FlexViewer.4.dll を選択します。C1FlexViewerコントロー ルがツールボックスツールボックスに追加されます。
6. C1FlexReport を Form にドロップします。C1FlexReport のバージョンと同じバージョンの以下の dll が参照に追加さ れます。 C1.C1Pdf.4 C1.Win.4 C1.Win.BarCode.4 C1.Win.C1Document.4 C1.Win.FlexReport.4 これらの参照が同じバージョンでない場合は、それらを手動で追加する必要があります。
7. C1FlexViewer コントロールを Form にドロップします。C1FlexViewer のバージョンと同じバージョンの以下の dll が参 照に追加されます。 C1.C1Zip.4 C1.Win.C1DX.4 C1.Win.C1Ribbon.4 C1.Win.FlexViewer.4 C1.Win.ImportServices.4 これらの参照が同じバージョンでない場合は、それらを手動で追加する必要があります。 8. 以下の dll を参照に追加します。 C1.C1Word.4 C1.C1Excel.4 C1.Win.C1Chart.4 C1.Win.C1Chart3D.4 マップおよびスーパーラベルカスタムフィールドを使用する場合は、以下の dll を参照に追加します。 C1.Win.FlexReport.CustomFields.4 C1.WPF.Maps.4 C1.WPF.4 9. C1Report コンポーネントの名前を C1FlexReport コンポーネントに変更します。コードでは、次のようにしてコンポー ネントの名前を変更できます。
Dim
report
As
New
C1Report()
' 変更後
Dim
report
As
New
C1FlexReport()
C1Report report =
new
C1Report();
//変更後
C1FlexReport report =
new
C1FlexReport();
10. コードビハインドで、名前空間の名前を C1.C1Report から C1.Win.FlexReport に変更します。
11. C1Report とその依存関係(C1.C1Report、C1.Win.C1Report、C1.Win.C1Barcode、C1.Win.C1RibbonPreview)の dll へのすべての参照を削除します。
12. 名前空間 C1.Win.C1Preview を削除します。
13. licenses.licx から、C1Report と参照先ビューア(C1Preview または C1RibbonPreview)のライセンスエントリを削除し ます。 14. C1FlexReport と C1FlexViewer を連結するには、次のようにコードを変更する必要があります。 Visual Basic C# Visual Basic
Dim
c1r
As
C1.C1Report.C1Report =
New
C1Report()
c1r.Load(filepath, reportname)
C1PrintPreviewControl1.Document = clr
' 変更後
Dim
report
As
New
C1FlexReport()
report.Load(filepath, reportname)
C1FlexViewer1.DocumentSource = report
C1.C1Report.C1Report c1r =
new
C1Report();
c1r.Load(filepath, reportname);
c1PrintPreviewControl1.Document=clr;
//変更後
C1FlexReport report =
new
C1FlexReport();
report.Load(filepath, reportname);
c1FlexViewer1.DocumentSource = report;
FlexReport は、実行時に C1FlexViewer コントロールを使用してのみプレビューできることに注意してください。 C1FlexViewer コントロールは、C1PrintPreviewControl または C1RibbonPreviewControl と互換性がありません。
C#
FlexReport と
と
C1Report
FlexReport は、C1Report を新しく機能強化した製品です。主に次の相違点があります。
レポートフィールドタイプの階層レポートフィールドタイプの階層
FlexReport の Field オブジェクトの構造は階層的であり、基本クラス FieldBase と他のさまざまなクラスタイプを使用して、さまざまなフィールドを表しま す。テキスト、画像、形状、サブレポートなどの各種データを表すために、さまざまなタイプのレポートフィールドがあります。FlexReport の Field オブ ジェクト階層の利点として、フィールドの操作がたいへん容易かつ柔軟になることがあります。
一方、C1Report のフィールドオブジェクトは複雑で、C1.C1Report.Field.Text プロパティを定義し、Calculated を True に設定する必要があります。 この場合は、各フィールドがレコードごとに個別に評価される式として解釈されるため、C1Report のフィールドはデータのレンダリングプロセスが低速 になります。
これらの事情にもかかわらず、FlexReport のフィールドタイプは C1Report のフィールドタイプと完全に互換性があり、FlexReport で C1Report の定義 をロードおよびレンダリングすることができます。 複数のデータソース複数のデータソース FlexReport 定義は、それぞれが一意の名前で識別される複数のデータソースを持つことができます。レポートに複数のデータソースが含まれる場合 は、データソースの 1 つがレポートのメインデータソースになります。他のデータソースから取得した値は、レポートパラメータを追加したり、チャート フィールドを作成するために使用できます。詳細については、「FlexReport のデータソース」を参照してください。 データソートの強化データソートの強化 FlexReport は、データソースソート機能が強化されています。DataSource.SortDefinitions プロパティを使用して、データに対していくつかのソート式 を定義し、ソートの条件と方向を指定できます。 さらに、データのソートとグループ化は独立しています。つまり、レコードのセットにグループ化を適用し、同時にソートを使用してレコードの順序を制御 できます。単純な例として、データを都市でソートし、同時に国別にグループ化できます。これにより、Crystal Report との互換性が向上します。詳細に ついては、「データのソート」を参照してください。 データフィルタの強化データフィルタの強化
FlexReport は、データフィルタ機能が強化されており、これを通常の VBScript(C1Report や FlexReport の他のすべての式も同様)や DataView(デー タをフィルタ処理するための条件を指定するいくつかの式)の中で指定できます。FlexReport でデータをフィルタ処理するための構文タイプを指定する には、FilterExpressionSyntax 列挙を DataView(デフォルト)または VBScript に設定します。
一方、C1Report のフィルタ処理は、C1Report.Filter プロパティによって指定され、これには DataView.Filter プロパティの制限された構文が使用さ れます。これらの事情にもかかわらず、FlexReport のフィルタ処理は、C1Report のフィルタ処理と完全に互換性があります。詳細については、「データ のフィルタ処理」を参照してください。
データソースの計算フィールドデータソースの計算フィールド FlexReport では、データソースが計算フィールドをサポートしています。つまり、データソースで計算フィールドを定義して、計算されたデータをフェッチ できます。計算フィールドの式は、DataSource.CalculatedFields コレクションで VBScript 式を使用して指定します。これらの式で、他のデータソース フィールド、レポートパラメータなどを使用できます。詳細については、「計算フィールドの定義」を参照してください。 レポートパラメータレポートパラメータ レポート内のレポートパラメータは、データのデフォルト値を変更して、レポートのレンダリング時にこれらの値を更新するために使用されます。 FlexReport では、C1FlexReport.Parameters コレクションでレポートパラメータを定義し、さらにいくつかのプロパティを使用します。Parameters コレク ションの各要素は ReportParameter クラスのインスタンスです。詳細については、「パラメータの追加」を参照してください。
C1Report では、DataSource.RecordSource または DataSource のいずれかでパラメータを指定できます。次のように、接続文字列で PARAMETERS "キーワード" を使用します。
C1Report.DataSource.RecordSource = “PARAMETERS param1 int 0; select * from Customers where id < param1”. C1Report レポート定義が FlexReport にロードされると、DataSource.RecordSource および DataSource.Filter を使用して指定されたパラメータが
C1FlexReport.Parameters コレクションに正しくインポートされます。 複数のサブセクション複数のサブセクション C1FlexReport では、各セクションに少なくとも 1 つのサブセクションが含まれます。セクションと同様に、サブセクションにもいくつかのレポートフィールド が含まれます。サブセクションを追加する利点は、親セクションにあるデータを補完できることです。サブセクションには、Section.SubSections コレク ションプロパティを使用してアクセスできます。詳細については、「複数のサブセクションの追加」を参照してください。 ビジュアルプロパティビジュアルプロパティ 境界線境界線 FlexReport では、VisualReportObject.Border プロパティを使用して、フィールド、サブセクション、およびセクションに境界線を指定できます。 また、境界線の各辺に独自のスタイルを設定し、各角にはさまざまな半径の丸みを設定できます。詳細については、「境界線」を参照してくださ い。 C1Report では、境界線はフィールドに対してのみ定義できます。 背景背景 FlexReport では、フィールド、サブセクション、およびセクションに背景を指定できます。背景色は、VisualReportObject.Background プロパ ティを使用して、単色またはグラデーションを設定できます。詳細については、「背景背景」を参照してください。 C1Report では、フィールドやセクションの背景色を設定するために BackColor プロパティが使用されます。
C1Report から
から
FlexReport への重要な変更点
への重要な変更点
FlexReport のコードはゼロから作成されています。したがって、C1Report から FlexReport への API の移行には、次のように重要な変更点が 含まれています。
C1Report では、DataSource.RecordSource 内でしかパラメータを直接指定できません(SQL 文の直前のキーワード PARAMETERS の 後)。 FlexReport では、レポートレベルの専用コレクション C1FlexReport.Parameters が別途用意されています。このコレクションで、レポー トパラメータを指定できます。.xml ファイルから C1Report レポート定義をインポートすると、PARAMETERS キーワードを使用して従来の 方法で指定されたパラメータは、C1FlexReport.Parameters コレクションに自動的に追加されます。 FlexReport では、データソースが開かれた後に OnOpen スクリプトが実行されます。したがって、そのスクリプトでメインデータソースに 行われた変更は、レポートに影響しません。レポートを生成する前にデータソースの一部を変更するには、GlobalScripts を使用しま す。GlobalScripts には、関数定義、プロシージャ定義、およびこれらの定義内にないコードを含めることができます。これらの定義とコー ドは、レポートのレンダリングが開始されてデータソースが開かれる前に、すべて実行されるようになりました。
C1Report では、Field から派生されたカスタムフィールドは、GetRenderContent() メソッドをオーバーライドします。C1FlexReport で は、このメソッドのシグネチャが次のように変更されました。
public virtual void GetDesignerRenderContent( ref string text,
ref Image image,
ref bool disposeImage);
このオーバーライドメソッドの disposeImage を true に設定すると、画像の使用後に、C1FlexReport がその画像に対して Dispose() を 呼び出します。
OutlineParent プロパティを使用します。サブレポートによって生成されたアウトラインをオフにするに
は、SubreportField.OutlinesVisible プロパティを使用します。
C1Report には、テキストを生成/レイアウトするためのメソッドが 2 つあり(デフォルトおよび「gdi+」)、それらは少し異なっています(
C1Report.UseGdiPlusTextRendering を true に設定した場合は非デフォルト)。これらのメソッドは、多少異なるテキストレイアウトを
行う場合があります(改行が異なる場所に配置されるなど)。FlexReport は常に、UseGdiPlusTextRendering が設定された C1Report と 同様にテキストを生成/レイアウトします。ただし、それでも、UseGdiPlusTextRendering が設定された C1Report と FlexReport の間では 改行に違いが発生する場合があります。
AddOutlineEntry イベントは削除されています。フィールド/セクション/サブセクションによって生成されるアウトラインエントリのテキスト
を変更するには、OutlineLabel プロパティを使用します。
C1FlexReport.ReportError イベントのために特殊な新しいイベントタイプ(ReportErrorEventArgs イベント引数を受け取る ReportErrorEventHandler)が追加されました。ReportEventArgs タイプが変更されました。イベント引数から Exception と Handled
が削除されました。
レポートにマップカスタムフィールドが含まれる場合は、レポートを同期して生成する必要があります(RenderAsync() ではなく Render() を呼び出す)。そうしないと、C1FlexViewer コントロールにマップフィールドが表示されませ
ん。C1FlexViewer.UseAsyncRendering プロパティを False に設定する必要があります。
C1Report では、エラーが発生した場合、EndReport イベントが呼び出されません。FlexReport では、レンダリング中に致命的エラーが 発生した場合でも、EndReport イベントが呼び出されます。 次の C1Report メソッド/プロパティは、C1FlexReport から削除されました。 C1Report.Document.Generate() C1Report.Document.Export() C1Report.Document.CreationDpi C1Report.DocumentInternal C1Report.Document.DoEvents C1Report.Document.HasEditableTags C1Report.CreationDevice StartReport()、StartSection()、EndSection()、RenderField() C1Report.DataSource.DataObject:C1FlexReport では、DataSource.Recordset プロパティから同じプロパティにアクセスでき ます。 C1Report.EmfType:C1FlexReport では、代わりに EMF+ を使用します。 C1Report.GetReportInfo():C1FlexReport では、代わりに C1FlexReport.ReportInfo を使用します。 C1Report.PageRenderingMode:C1FlexReport では、C1FlexReport.GetPageImage を使用してページのメタファイルを取得し ます。
C1FlexReport では、コードビハインドで C1Report Render<X> メソッドにアクセスできません。これらのメソッドは内部的に使用されま す。
次のコードでは、C1Report Render<X> オブジェクトを使用できません。 c1Report1.Document.Body.Children.Add(RenderGraphic obj) このメソッドは、FlexReport ではサポートされていません。
C1FlexReport.Document は System.Drawing.Printing.PrintDocument に変換できません。PrintDocument の C1Report.Document プロパティは存在しないため、FlexReport で PrintDocument を使用してはなりません。
FlexReport では、IC1FlexReportRecordset に ApplyFilter() メソッドと ApplySort() メソッドがありません。代わりに、FlexReport の DataSource にあるフィルタ定義とソート定義を使用してください。IC1FlexReportRecordset を DataSource.Recordset に割り当てても、 DataSource でフィルタ/ソートを定義できます。
FlexReport では、C1Report の FieldBase オブジェクトを使用できなくなりました。
C1FlexReport では、フィールドは「レガシー」タイプです。特殊なタイプは、C1FlexReport の FieldBase から派生されるようになりました。 次のフィールドオブジェクトは、コードビハインドで直接作成する必要があります。
TextField text = new TextField();
BarCodeField barcode = new BarCodeField(); SubreportField subreport = new SubreportField(); ChartField chart = new ChartField();
RTFField rtf=new RTFField();
CheckBoxField checkbox = new CheckBoxField(); CalculatedField calField=new CalculatedField();
ImageField img = new ImageField(); ShapeField shape = new ShapeField();
対応するプロパティは、C1Report FieldBase オブジェクトの設定に使用されるプロパティと同じプロパティを使用します。 C1FlexReport では、C1Report の CanGrow プロパティと CanShrink プロパティの名前が変更されました。代わり
に、C1FlexReport.AutoHeight、C1FlexReport.AutoWidth、および C1FlexReport.AutoSizeBehavior を使用します。
CanGrow=True および CanShrink=True は、C1FlexReport.AutoSizeBehavior.GrowAndShrink として使用できます。 FlexReport では、AddScriptObject イベントの代わりに、GetScriptObject イベントがあります。したがって、次のコードは private void c1flxr_StartReport(object sender, System.EventArgs e)
{
c1flxr.AddScriptObject("LookUp", new LookUpObject()); }
次のように変更します。
c1flxr.GetScriptObject += c1flxr_GetScriptObject; ...
void c1flxr_GetScriptObject(object sender, C1.Win.FlexReport.ReportGetScriptObjectEventArgs e) {
if (e.Name.ToLower() == "lookup") e.Object = new LookUpObject(); }
レポートテンプレートが変更されない場合、C1FlexReport は、レンダリングされたコンテンツをキャッシュし、レポートを再生成しません。 レポートを必ず再生成するには、C1FlexReport.SetDirty() メソッドを呼び出します。
主な特長
主な特長
FlexReport for WinForms の主な機能は次のとおりです。 軽量、高速軽量、高速
FlexReport は、特に小さなレポートで軽量かつ高速です。FlexReport は C1Report と比べて 2 倍高速にレンダリング されます。また、PDF、HTML などの主要なエクスポートは C1Report より大幅に高速化されています。 高品質なレンダリング高品質なレンダリング FlexReport は、DirectWrite/Direct2D を使用することで、プリンタや画面などの測定コンテキストに依存しない、高パ フォーマンスで高品質なレポートコンテンツを描画および生成できます。 1 つのビューアですべてのドキュメントタイプを表示つのビューアですべてのドキュメントタイプを表示 FlexViewer は、FlexReport の 2015 v3 で導入された新しいコント ロールです。このコントロールを使用して、C1Report、C1FlexReport、SSRS、C1Document などの複数のドキュメントタ イプを表示することができます。パラメータの使用/リセット、レポートレンダリングをリフレッシュおよびキャンセルするオ プション、レポート内のさまざまな場所にジャンプするためのブックマークなどの機能が提供されています。 より正確なより正確な Crystal Report の移行の移行
FlexReport は、Crystal Reports との互換性を向上させる機能を備えています。以下の機能に関して適切な移行がサ ポートされています。 サブセクション 複雑な式 指定された順序でのグループ化 強化された境界線スタイル 詳細については、「Crystal Reports のインポート」を参照してください。 モダンモダン UI レポート設計アプリケーション(FlexReportDesigner)とプレビューツール(FlexViewer)はリボンベースの UI インタ フェースを備えており、デザイナやビューアのオプションがアクセスしやすく配置されて、直感的でリッチなユーザー使 用環境が提供されています。 リッチなユーザー使用環境を備えた新しいデザイナアプリケーションリッチなユーザー使用環境を備えた新しいデザイナアプリケーション FlexReportDesigner アプリケーションには、レポート設計を従来より格段に容易にする機能が追加されています。次の 新機能があります。 コントロールからの距離を表示および配置するスナップライン。 折りたたみ/展開が可能なセクションとサブセクション。 オプションでセクションとサブセクションのヘッダーストリップを表示するためのキャプション表示設定。 設計時にチャートフィールドのプロパティ、データソース、視覚効果を設定するためのチャートエディタ。 データソース、パラメータ、ソート式、計算フィールドを追加、編集、削除するためのデータタブ。 コンテキストメニューの[式の編集]を使用して式を編集する機能。 デザイナで[標準の配置]ボタンを使用して、数値を左詰め、その他の値を右詰めに揃える機能。 詳細については、「FlexReportDesigner について」を参照してください。 新しいさまざまなチャート新しいさまざまなチャート FlexReport では 70 種類以上のチャートタイプが提供されており、そこから自由に選択できます。FlexReportDesigner アプリケーションの設計時エディタを使用して、チャートへのデータの連結、プロパティの設定、視覚効果の追加、その 他関連タスクを容易に実行できます。 SQLiteデータベースへのサポートの追加 他のデータベースと同様に、SQLiteへの接続をFlexReportDesignerにて指定してデータを取得することが可能です。 そのために、 <br />SQLiteのADO.NETプロバイダがシステムにインストールされている必要があります。 詳細につ いては、「https://system.data.sqlite.org」をご参考ください。
FlexReport の詳細情報
の詳細情報
FlexReport の使用を開始する前に、FlexReport に付属しているコンポーネントとコントロール、FlexReport のオブジェクトモデ ル、FlexReport で使用できるセクションまたはテーブル領域について理解しておく必要があります。以下のセクションでは、こ れらに関する詳細な情報を提供します。
コンポーネントとコントロール
コンポーネントとコントロール
FlexReport for WinForms は、以下のアセンブリで構成されています。 C1.Win.FlexReport dll 以下のコンポーネントを通して、すべてのレポートレンダリング機能とドキュメント生成機能を提供します。 C1FlexReport: C1FlexReport コンポーネントは、水平区切りデータベースレポートを生成するレポート生成コンポーネントです。レ ポートを直接プリンタまたはプレビューコントロールにレンダリングすることも、さまざまな移植可能な形式(XLS、PDF、 HTML、テキスト、画像など)にエクスポートすることもできます。FlexReport コンポーネントは、レポート定義を作成、カ スタマイズ、ロード、および保存するための機能豊富なオブジェクトモデルも公開しています。 C1.Win.FlexViewer dll 以下のコントロールまたはコンポーネントを通して、すべての表示機能を提供します。 C1FlexViewer: C1FlexViewerコントロールは、複数ドキュメントプレビューコントロールです。リボンベースの UI を備えており、すべて のプレビュー関連オプション(ビューアペインおよびステータスバー)に簡単にアクセスできます。 C1FlexViewerPane: C1FlexViewerPane コントロールは、プレビュー中のドキュメントのページを表示し、パン、ズームなどのプレビュー操 作を処理できます。フォームデザイナでは、コンテキストメニュー項目を使用して、現在のフォーム内に標準のツール バーとステータスバーを作成できます。 C1FlexViewerDialog: C1FlexViewerDialog は、ネストされた C1FlexViewer コントロールを使用して表示されるフォームです。 含まれるアプリケーション含まれるアプリケーション レポート作成用のコンポーネントとコントロールに加えて、FlexReport には以下のスタンドアロンアプリケーションも含まれま す。 C1FlexReportDesigner exe C1FlexReport レポート定義ファイルを作成および編集するための組み込みアプリケーションです。このデザイナを使用 して、C1FlexReport コンポーネントで読み込めるファイル(XML)を作成、編集、ロード、および保存できます。
オブジェクトモデルの概要
オブジェクトモデルの概要
C1FlexReport は優れたオブジェクトモデルを備え、その大部分は Microsoft Access モデルに基づいています。これらのオブ ジェクト、コレクション、関連するプロパティやメソッドなどにより、FlexReport を柔軟かつ容易に生成することが可能です。次の 表に、オブジェクトおよびそのプロパティとメソッドを一覧します。 C1FlexReport オブジェクトオブジェクト ReportName、Load、GetReportList、Save、Clear、Render、Parameters、Document、 DoEvents、Cancel、Page、MaxPages、Font、OnOpen、OnClose、OnNoData、OnPage、OnError、Evaluate、Execute Layout オブジェクトオブジェクト Width、MarginLeft、MarginTop、MarginRight、MarginBottom、PaperSize、Orientation、
Columns、ColumnLayout、PageHeader、PageFooter DataSource オブジェクトオブジェクト CalculatedFields、ConnectionString、Filter、RecordSource、SortDefinitions DataSourceCollection Report、Add、RemoveAt SortDefinition オブジェクトオブジェクト Direction、Expression SortDefinitionCollection Owner、Report CalculatedField オブジェクトオブジェクト DataSource、Expression、Type CalculatedFieldCollection Owner、Report グループグループ GroupBy、KeepTogether、SectionHeader、SectionFooter、Sort、SortExpression GroupCollection Add、Clear、RemoveAt、Report ReportParameter オブジェクトオブジェクト AllowedValuesDefinition、DisplayText、ParentReport、SetName ReportParameterCollection InsertItem、RemoveItem、SetItem、Report AllowedValuesDefinition オブジェクトオブジェクト AssignFrom、Binding、Values Section オブジェクトオブジェクト Calculated、Fields、Height、KeepTogether、SplitBehavior、SubSections SectionCollection Detail、Footer、Header、PageFooter、PageHeader SubSection オブジェクトオブジェクト Calculated、Fields、Height、ParentReport、ParentSection、SplitBehavior、Visible SubSectionCollection Add、Remove、RemoveAt、Report FieldBase オブジェクトオブジェクト Anchor、Height、KeepTogether、ForcePageBreak、MarginBottom、MarginLeft、 MarginRight、MarginTop、Section、SplitHorzBehavior、SplitVertBehavior FieldCollection Add、Remove、RemoveAt
BarCodeField オブジェクトオブジェクト BarCode、BarCodeOptions、Font、Text CheckBoxField オブジェクトオブジェクト CheckAlign、CheckMark、Text、ThreeState、Value DataField オブジェクトオブジェクト Calculated、Name、Type、Value ImageField オブジェクトオブジェクト AssignFrom、PictureAlign、PictureScale RtfField オブジェクトオブジェクト AssignFrom、DetectUrls、Text ShapeField オブジェクトオブジェクト Line、Shape、ShapeBackColor、ShapeBackground、ShapeType SubreportField オブジェクトオブジェクト ParameterValues、Subreport、SubreportFilter TextField オブジェクトオブジェクト Format、Text ExportFilter オブジェクトオブジェクト ExportFilter GraphicsFilter オブジェクトオブジェクト GraphicsFilter HtmlFilter オブジェクトオブジェクト ExportProvider、Paged PdfFilter オブジェクトオブジェクト EmbedFonts、ExportProvider、UseOutlines、PdfACompatible、PdfSecurityOptions RtfFilter オブジェクトオブジェクト ExportProvider、OpenXml、Paged XlsFilter オブジェクトオブジェクト ExportProvider、OpenXml、PictureLayer、SheetName、Tolerance VisualReportObject Background、Border、BordersSplitHorzMode、BordersSplitVertMode、OutlineLabel BehaviorOptions AssignFrom、Reset、IgnoreInvisibleFieldsInGrowShrinkSections
FlexReport のセクション
のセクション
すべてのレポートは、次の 5 つの基本セクションで構成されます。 セクションセクション 説明説明 詳細 詳細セクションには、ソースレコードセット内の各レコードごとに一度ずつレンダリングされるフィール ドが含まれます。 ヘッダー レポートのヘッダーセクションは、レポートの最初にレンダリングされます。 フッター レポートのフッターセクションは、レポートの最後にレンダリングされます。 ページヘッダー ページヘッダーセクションは、各ページの上部にレンダリングされます(オプションで、レポートヘッ ダーを含むページを除外することもできます)。 ページフッター ページフッターセクションは、各ページの下部にレンダリングされます。 さらに、グループごとに、グループヘッダーグループヘッダーとグループフッターグループフッターという 2 つの追加セクションがあります。たとえば、3 つのグルー プレベルを持つレポートには 11 のセクションがあることになります。 サブセクションサブセクションという追加セクションをレポートの任意のセクションに追加することもできます。 これらのセクションを非表示にすることはできますが、グループを追加または削除しない限り、セクションを追加または削 除することはできません。 次の図に、一般的なレポートで各セクションがどのようにレンダリングされるかを示します。図では、詳細セクションに置かれた サブセクションがレポートでどのようにレンダリングされるかも示しています。 レポートヘッダーレポートヘッダー 最初にレンダリングされるセクションは、レポートヘッダーです。このセクションには、通常、レポートを識別する情報が含まれま す。 ページヘッダーページヘッダー レポートヘッダーの次に、ページヘッダーがレンダリングされます。レポート内にグループがない場合、このセクションには、通 常、詳細セクション内のフィールドについて説明するラベルが含まれます。 グループヘッダーとグループフッターグループヘッダーとグループフッター
次に、グループヘッダー、詳細、グループフッターの各セクションがレンダリングされます。これらが、実際のレポートデータを含 むセクションです。グループヘッダーとグループフッターには、多くの場合、グループの合計、パーセント値、最大値、最小値な どの集計関数が含まれます。グループヘッダーとグループフッターは、GroupBy プロパティによって指定された式の値が、あ るレコードから次のレコードへ変わるたびに挿入されます。 詳細詳細 詳細セクションには、各レコードのデータが含まれます。Visible プロパティを False に設定してこのセクションを非表示にし、グ ループヘッダーとグループフッターだけを表示することもできます。これは、サマリーレポートの作成に便利な方法です。 ページフッターページフッター 各ページの下部には、ページフッターセクションがレンダリングされます。このセクションには、通常、ページ番号、レポートの総 ページ数、レポートの印刷日などの情報が含まれます。 レポートフッターレポートフッター 最後に、レポートフッターセクションが最後のページフッターの前に出力されます。このセクションは、多くの場合、レポート全体 に関するサマリー情報を表示するために使用されます。 サブセクションサブセクション サブセクションは、レポートの任意のセクションに追加できます。デフォルトでは、現在選択されているセクションの下部に追加 されます。このセクションには、親セクションにあるデータを補完する付加的なデータが含まれます。セクションの高さは、サブ セクションの高さの合計によって決まります。 カスタムセクションカスタムセクション
セクションを表示するかどうかは、Visible プロパティを True または False に設定することで決定できます。グループヘッダー は、Repeat プロパティを True に設定することで、(ページがグループの最初のページかどうかにかかわらず)各ページの上 部に繰り返し表示できます。ページヘッダーとページフッターは、Layout オブジェクトの PageHeader プロパティと PageFooter プロパティを設定することで、レポートヘッダーおよびレポートフッターセクションを含むページから削除できます。
FlexReport クイックスタート
クイックスタート
C1FlexReport は、デスクトップ上のさまざまな状況で使用できますが、どの場合でも主な手順は同じです。 1. レポート定義を作成するレポート定義を作成する
レポート定義は、FlexReportDesigner アプリケーションを使用して直接作成するか、Microsoft Access のレポートデ ザイナや Crystal Report を使用して作成した後で、FlexReportDesigner にインポートできます。コードを使用して作 成することもできます。この場合は、オブジェクトモデルを使用してグループおよびフィールドを追加するか、カスタム XML ファイルを記述します。 2. C1FlexReport コンポーネントにレポートをロードするコンポーネントにレポートをロードする レポートをロードするには、設計時に[レポートのロード][レポートのロード]コンテキストメニューを使用するか、プログラムで C1FlexReport.Load メソッドを使用します。設計時にレポートをロードした場合、レポートはコントロールに保持(保存) されるため、レポート定義ファイルを配布する必要はありません。 3. レポートをレンダリングするレポートをレンダリングする レポートは、C1FlexViewer.DocumentSource プロパティを使用して FlexViewer コントロールにレンダリングできま す。プレビューコントロールによってレポートが画面に表示され、ユーザーは、全画面表示やパンなどの機能を使用し てレポートをプレビューできます。レポートのレンダリングは、デスクトップアプリケーションでのみサポートされます。 以下の手順は、レポート定義を作成し、レポートを C1FlexReport コンポーネントにロードし、レポートをレンダリングする方法を 示します。
手順
手順
1:レポート定義の作成
:レポート定義の作成
次のトピックでは、FlexReportDesigner アプリケーションとコードコードを使用してレポート定義を作成する方法について説明します。レポート定義の作成は、レポートのレンダリン グとは異なることに注意してください。レポートのレンダリングは、既存のレポート定義をロードし、C1FlexReport.Render メソッドを呼び出すだけで行うことができます。レポート定義を作成する最も簡単な方法は、C1FlexReportDesigner を使用することです。これは、Microsoft Access のレポートデザイナや Crystal Report に似たスタンドア
ロンアプリケーションです。 FlexReportDesigner を使用したレポート定義の作成を使用したレポート定義の作成 C1FlexReport ウィザードウィザードは、新しいレポートの作成手順を最初から最後までガイドします。次の手順に従います。 1. まず、.NET プロジェクトを作成し、C1FlexReport コンポーネントをツールボックスに追加します。 2. ツールボックスで、C1FlexReport アイコンをダブルクリックして、このコンポーネントをプロジェクトに追加します。コンポーネントは、コンポーネントトレイ内でフォーム の下に表示されます。 3. C1FlexReport コンポーネントのスマートタグをクリックし、そのタスクタスクメニューから[レポートの編集][レポートの編集]を選択します。 C1FlexReportDesigner が開き、C1FlexReport ウィザードウィザードによる 5 つの簡単な手順のガイドが開始されます。 C1FlexReport ウィザードウィザードで、次の 5 つの手順を実行してレポートを作成します。 1. 新しいレポートのデータソースを選択します。新しいレポートのデータソースを選択します。 このページを使用して、レポートデータの取得に使用される DataSource.ConnectionString と DataSource.RecordSource を選択します。 DataSource.ConnectionString は、次の 3 つの方法で指定できます。 文字列をエディタに直接入力します。 ドロップダウンリストを使用して、最近使用した接続文字列を選択します(デザイナには、最近使用された接続文字列が 8 個まで保持されます)。 省略符省略符((...))ボタンをクリックして、標準の接続文字列ビルダを起動します。 DataSource.RecordSource の文字列は、次の 2 つの方法で指定できます。 [テーブル][テーブル]オプションをクリックし、リストからテーブルを選択します。 [[SQL]]オプションをクリックし、エディタに SQL 文を入力(または貼り付け)します。 手順手順 1 の実行の実行
次の手順を実行します。
1. 省略符省略符ボタンをクリックして、標準の接続文字列ビルダを起動します。[データリンクプロパティ][データリンクプロパティ]ダイアログボックスが開きます。 2. [プロバイダ][プロバイダ]タブを選択し、リストからデータプロバイダを選択します。この例では、Microsoft Jet 4.0 OLE DB Provider を選択します。
3. [次へ][次へ]ボタンをクリックするか、[接続][接続]タブを選択します。ここで、データソースを選択する必要があります。
4. 省略符省略符ボタンをクリックしてデータベースを選択します。[[Access データベースの選択]データベースの選択]ダイアログボックスが表示されます。この例では、(デフォルトでは
Documents フォルダにインストールされる)ComponentOne Samples ディレクトリの Common フォルダにある C1NWind.mdb を選択します。このディレク
トリはデフォルトのインストールパスに基づいていますが、インストールパスを変更した場合は、パスが異なる場合があります。 5. [開く][開く]をクリックします。接続をテストし、[[OK]]をクリックします。 6. [[OK]]をクリックして、[データリンクプロパティ][データリンクプロパティ]ダイアログボックスを閉じます。 7. データソースを選択したら、テーブル、ビュー、またはストアドプロシージャを選択して実際のデータを提供できます。DataSource.RecordSource の文字列 は、次の 2 つの方法で指定できます。 [データソース] [データソース]タブを選択し、[テーブル][テーブル]リストから Products テーブルを選択します。 [[SQL]]タブを選択し、エディタに SQL 文を入力(または貼り付け)します。 次に例を示します。
select * from products
8. [次へ][次へ]をクリックします。ウィザードに従って残りの手順を実行します。 2. レポートに含めるフィールドを選択します。レポートに含めるフィールドを選択します。 このページには、手順 1 で選択したレコードセットにあるフィールドのリスト、およびレポートのグループフィールドと詳細フィールドを定義する 2 つのリストが表示され ます。グループフィールドはデータのソート方法と集計方法を定義し、詳細フィールドはレポートに表示する情報を定義します。 マウスポインタを使用してドラッグすることで、リスト間でフィールドを移動することができます。フィールドを[詳細][詳細]リストにドラッグしてレポートに入れたり、リスト内で フィールドをドラッグして順序を変更することができます。レポートからフィールドを削除する場合は、フィールドをドラッグして[利用可能なフィールド][利用可能なフィールド]リストに戻します。 手順手順 2 の実行の実行 次の手順を実行します。 1. マウスポインタを使用して CategoryID フィールドを選択し、[グループ][グループ]リストにドラッグします。 2. [>>]ボタンをクリックして、残りのフィールドを[詳細][詳細]リストに移動します。
3. [次へ][次へ]をクリックします。ウィザードに従って残りの手順を実行します。 3. 新しいレポートのレイアウトを選択します。新しいレポートのレイアウトを選択します。 このページには、ページ内でのデータの構成方法を定義するいくつかのオプションが用意されています。レイアウトを選択すると、左側にサムネイルプレビューが表示 され、ページ内でレイアウトがどのように表示されるかを確認できます。2 つのレイアウトグループがあります。1 つは、グループなしのレポート用のレイアウトグルー プ、もう 1 つはグループありのレポート用のレイアウトとグループです。目的とするレポートの最終的な外観に最も近いレイアウトを選択してください。 また、このページでは、用紙の方向と、フィールドをページ幅に合わせて調整するかどうかを選択できます。 [ラベル][ラベル]レイアウトオプションを使用して、Avery スタイルのラベルを印刷します。このオプションを選択すると、印刷するラベルの種類を指定するためのページが表示 されます。 手順手順 3 の実行の実行 次の手順を実行します。 1. [アウトライン][アウトライン]レイアウトのままにします。 2. [次へ][次へ]をクリックします。ウィザードに従って残りの手順を実行します。 4. 新しいレポートのスタイルを選択します。新しいレポートのスタイルを選択します。 このページでは、新しいレポートで使用するフォントと色を選択できます。前のページと同様に、プレビューが表示され、各スタイルがどのように表示されるかを確認で きます。最適なスタイルを選択します(スタイルは後で変更したり、詳細に調整することができます)。
手順手順 4 の実行の実行 1. Verdana スタイルを選択します。 2. [次へ][次へ]をクリックします。ウィザードに従って残りの手順を実行します。 5. 新しいレポートのタイトルを選択します。新しいレポートのタイトルを選択します。 この最後の手順のページでは、新しいページのタイトルを選択します。また、新しいレポートをすぐにプレビューするか、プレビューする前に編集モードに移動してデザ インに手を加えるかを指定します。 手順手順 5 の実行の実行 1. 新しいレポートのタイトルを入力します。たとえば、「Products Report」とします。 2. [レポートのプレビュー][レポートのプレビュー]を選択し、[完了][完了]をクリックします。 デザイナデザイナのプレビューペインにレポートが直ちに表示されます。 レポートに何らかの調整が必要なことに気づくことがあります。レポートの修正方法については、次の手順で説明します。 コードを使用したレポート定義の作成コードを使用したレポート定義の作成 以下の手順では、FlexReportDesigner アプリケーションまたはコードを使用してレポート定義を作成する方法について説明します。独自のレポートデザイナを記述したり、ア ドホックなレポートジェネレータを作成することもできます。
この例では、コードを使用して、C1NWind データベースに基づく単純な表形式のレポート定義を作成します。コードにはコメントが付けられ、C1FlexReport オブジェクトモデル の最も重要な要素が例示されています。次の手順を実行します。 1. 最初に、ボタンコントロール、C1FlexReport コンポーネント、および C1FlexViewer コントロールをフォームに追加します。次のプロパティを設定します。 Button.Name = btnEmployees C1FlexReport.Name = c1FlexReport1 (C# でのデフォルト名) C1FlexViewer.Name = c1FlexViewer1 (C# でのデフォルト名) 2. c1FlexReport1 という名前のコントロールを初期化します。それには、Clear メソッドを使用してコンテンツを消去し、コントロールのフォントを設定します(このフォントが 新しいフィールドに割り当てられます)。
Private Sub RenderEmployees()
C1FlexReport1.DataSource.RecordSourceType = RecordSourceType.Auto ' 既存のフィールドをすべて消去します C1FlexReport1.Clear() ' すべてのコントロールのデフォルトのフォントを設定します C1FlexReport1.Font.Name = "Tahoma" C1FlexReport1.Font.Size = 8 End Sub
private void RenderEmployees() { c1FlexReport1.DataSource.RecordSourceType = RecordSourceType.Auto; // 既存のフィールドをすべて消去します c1FlexReport1.Clear(); // すべてのコントロールのデフォルトのフォントを設定します c1FlexReport1.Font.Name = "Tahoma"; c1FlexReport1.Font.Size = 8; }
3. 次に、C1NWind.mdb データベースから必要なデータを取得するように DataSource オブジェクトを設定します。それには、ConnectionString プロパティと
RecordSource プロパティを使用します。
' DataSource を初期化します
Dim ds As DataSource = C1FlexReport1.DataSource
ds.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=C:\...\ComponentOne Samples\Common\C1NWind.mdb;"
ds.RecordSource = "Employees"
//DataSource を初期化します
DataSource ds = c1FlexReport1.DataSource;
ds.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\...\ComponentOne Samples\Common\C1NWind.mdb;"; ds.RecordSource = "Employees"; 4. 次に、ページ内のレポートのレイアウト方法を定義する Layout オブジェクトを初期化します。ここでは、レポートを Portrait(縦)モードでレンダリングし、Width を 6.5 インチ(ページ幅 8.5 インチから、両側のマージン各 1 インチを引いた値)に設定します。 'Layout を初期化します
Dim l As Layout = C1FlexReport1.Layout l.Orientation = OrientationEnum.Portrait l.Width = 6.5 * 1440 ' 8.5 からマージンを引いた値(ツイップ単位) //Layout を初期化します Layout l = c1FlexReport1.Layout; l.Orientation = OrientationEnum.Portrait; l.Width = 6.5 * 1440; // 8.5 からマージンを引いた値(ツイップ単位) 5. 次の手順は、興味深いものです。すべてのレポートには、5 つの基本セクション(詳細詳細、レポートヘッダーレポートヘッダー、レポートフッターレポートフッター、ページヘッダーページヘッダー、ページフッターページフッター)がありま す。次のコードを使用して、レポートヘッダーを設定します。ここでは、いくつかのプロパティを設定し、タイトルフィールドを追加します。 Visual Basic C# Visual Basic C# Visual Basic C# Visual Basic
' レポートヘッダーを作成します
Dim s As Section = C1FlexReport1.Sections(SectionTypeEnum.Header) s.Height = 1440
s.Visible = True
s.BackColor = Color.FromArgb(200, 200, 200) Dim textFld1 As New TextField()
textFld1.Name = "FldTitle"
textFld1.Text = "Employees Report"
textFld1.Left = 0 textFld1.Top = 0 textFld1.Width = 8000 textFld1.Height = 1440 textFld1.Font.Size = 24 textFld1.Font.Bold = True textFld1.ForeColor = Color.FromArgb(0, 0, 100) C1FlexReport1.Sections.Header.Fields.Add(textFld1) // レポートヘッダーを作成します Section s = c1FlexReport1.Sections[SectionTypeEnum.Header]; s.Height = 1440; s.Visible = true; s.BackColor = Color.FromArgb(200, 200, 200); TextField textFld1 = new TextField();
textFld1.Name = "FldTitle";
textFld1.Text= "Employees Report"; textFld1.Left = 0; textFld1.Top = 0; textFld1.Width = 8000; textFld1.Height = 1440; textFld1.Font.Size = 24; textFld1.Font.Bold = true; textFld1.ForeColor = Color.FromArgb(0, 0, 100); c1FlexReport1.Sections.Header.Fields.Add(textFld1); 上記のセクションオブジェクトには、Fields コレクションがあります。このコレクションの Add メソッドは、新しいフィールドを作成し、それをセクションに割り当てます。パ ラメータで、新しいフィールドの Name、Text、Left、Top、Width、Height の各プロパティを指定しています。デフォルトでは、フィールドのフォントはコントロールと同じ です。このフィールドはタイトルなので、フォントを変更してサイズを大きくしています。フォントサイズに合わせてフィールドの高さを十分大きくしてください。そうしない と、何も表示されなくなります。 6. 次に、ページフッターセクションを設定します。このセクションは、テキストフィールドに式が含まれており、さらに興味深くなっています。テキストフィールド内の式を評価 するには、TextField.Text.Expression プロパティに式を設定するだけです。テキストフィールド内の式は、レポートのレンダリング時に評価されます。C1Report で は、フィールドの Calculated プロパティを True に設定することで、同じことを実現できます。ページフッターを作成するには、次のコードを追加します。 ' ページフッターを作成します s = C1FlexReport1.Sections(SectionTypeEnum.PageFooter) s.Height = 500 s.Visible = True
Dim textFld2 As New TextField() textFld2.Name = "FldFtrLeft"
textFld2.Text.Expression = """Employees: Printed on "" & Now"
textFld2.Left = 0 textFld2.Top = 0 textFld2.Width = 4000 textFld2.Height = 300 textFld2.Font.Size = 8 textFld2.Font.Bold = False C1FlexReport1.Sections.PageFooter.Fields.Add(textFld2) Dim textFld3 As New TextField()
textFld3.Name = "FldFtrRight"
textFld3.Text.Expression = """Page "" + Page + "" of "" & Pages"
textFld3.Left = 4000 textFld3.Top = 0 textFld3.Width = 4000 textFld3.Height = 300
textFld3.Align = FieldAlignEnum.RightTop
textFld3.Width = C1FlexReport1.Layout.Width - textFld3.Left C1FlexReport1.Sections.PageFooter.Fields.Add(textFld3) 'ページフッターの前に直線を追加します
Dim shpfld As New ShapeField()
C#
shpfld.Name = "FldLine" shpfld.ShapeType = ShapeType.Line shpfld.Left = 0 shpfld.Top = 0 shpfld.Width = C1FlexReport1.Layout.Width shpfld.Height = 20 C1FlexReport1.Sections.PageFooter.Fields.Add(shpfld) // ページフッターを作成します s = c1FlexReport1.Sections[SectionTypeEnum.PageFooter]; s.Height = 500; s.Visible = true;
TextField textFld2 = new TextField(); textFld2.Name = "FldFtrLeft";
textFld2.Text.Expression = @"""Employees: Printed on "" & Now"; textFld2.Left = 0; textFld2.Top = 0; textFld2.Width = 4000; textFld2.Height = 300; textFld2.Font.Size = 8; textFld2.Font.Bold = false; c1FlexReport1.Sections.PageFooter.Fields.Add(textFld2); TextField textFld3 = new TextField();
textFld3.Name = "FldFtrRight";
textFld3.Text.Expression = @"""Page "" + Page + "" of "" & Pages"; textFld3.Left = 4000;
textFld3.Top = 0; textFld3.Width = 4000; textFld3.Height = 300;
textFld3.Align = FieldAlignEnum.RightTop;
textFld3.Width = c1FlexReport1.Layout.Width - textFld3.Left; c1FlexReport1.Sections.PageFooter.Fields.Add(textFld3);
//ページフッターの前に直線を追加します
ShapeField shpfld = new ShapeField(); shpfld.Name = "FldLine"; shpfld.ShapeType = ShapeType.Line; shpfld.Left = 0; shpfld.Top = 0; shpfld.Width = c1FlexReport1.Layout.Width; shpfld.Height = 20; c1FlexReport1.Sections.PageFooter.Fields.Add(shpfld);
このページフッターセクションの式では、VBScript 固有の変数ではなく、C1FlexReport で定義されている変数を使用しています。Page と Pages は、現在のページ番 号と総ページ数が格納される変数です。このセクションでは、直線として表示されるように設定されたフィールドも使用されています。 7. 次に、ページヘッダーセクションを設定します。このセクションは、各ページの上部にレンダリングされ、フィールドラベルが表示されます。ページヘッダーセクションを使 用してフィールドラベルを表示するテクニックは、表形式のレポートでよく使用されます。コードは単純ですが、すべてのフィールドのサイズを指定しているため、見た目 は多少煩雑です。実際のアプリケーションでは、これらの値はプログラムに組み込まれません。フィールドラベルを含むページヘッダーを作成するには、次のコードを 追加します。 'フィールドラベルを含むページヘッダーを作成します s = C1FlexReport1.Sections(SectionTypeEnum.PageHeader) s.Height = 500 s.Visible = True C1FlexReport1.Font.Bold = True
Dim textFld4 As New TextField() textFld4.Name = "LblID" textFld4.Text = "ID" textFld4.Left = 0 textFld4.Top = 50 textFld4.Width = 400 textFld4.Height = 300 textFld4.Align = FieldAlignEnum.RightTop C1FlexReport1.Sections.PageHeader.Fields.Add(textFld4) Dim textFld5 As New TextField()
textFld5.Name = "LblFirstName"
textFld5.Text = "First"
textFld5.Left = 500
C#
textFld5.Top = 50 textFld5.Width = 900 textFld5.Height = 300
C1FlexReport1.Sections.PageHeader.Fields.Add(textFld5) Dim textFld6 As New TextField()
textFld6.Name = "LblLastName" textFld6.Text = "Last" textFld6.Left = 1500 textFld6.Top = 50 textFld6.Width = 900 textFld6.Height = 300 C1FlexReport1.Sections.PageHeader.Fields.Add(textFld6) Dim textFld7 As New TextField()
textFld7.Name = "LblTitle" textFld7.Text = "Title" textFld7.Left = 2500 textFld7.Top = 50 textFld7.Width = 2400 textFld7.Height = 300 C1FlexReport1.Sections.PageHeader.Fields.Add(textFld7) Dim textFld8 As New TextField()
textFld8.Name = "LblTitle" textFld8.Text = "Notes" textFld8.Left = 5000 textFld8.Top = 50 textFld8.Width = 8000 textFld8.Height = 300 C1FlexReport1.Sections.PageHeader.Fields.Add(textFld8) C1FlexReport1.Font.Bold = False
Dim shpfld2 As New ShapeField() shpfld2.Name = "FldLine" shpfld2.ShapeType = ShapeType.Line shpfld2.Left = 0 shpfld2.Top = 400 shpfld2.Width = C1FlexReport1.Layout.Width shpfld2.Height = 20 C1FlexReport1.Sections.PageHeader.Fields.Add(shpfld2) //フィールドラベルを含むページヘッダーを作成します s = c1FlexReport1.Sections[SectionTypeEnum.PageHeader]; s.Height = 500; s.Visible = true; c1FlexReport1.Font.Bold = true; TextField textFld4 = new TextField(); textFld4.Name = "LblID"; textFld4.Text = "ID"; textFld4.Left = 0; textFld4.Top = 50; textFld4.Width = 400; textFld4.Height = 300; textFld4.Align = FieldAlignEnum.RightTop; c1FlexReport1.Sections.PageHeader.Fields.Add(textFld4); TextField textFld5 = new TextField();
textFld5.Name = "LblFirstName"; textFld5.Text = "First"; textFld5.Left = 500; textFld5.Top = 50; textFld5.Width = 900; textFld5.Height = 300; c1FlexReport1.Sections.PageHeader.Fields.Add(textFld5); TextField textFld6 = new TextField();
textFld6.Name = "LblLastName"; textFld6.Text = "Last"; textFld6.Left = 1500; textFld6.Top = 50; textFld6.Width = 900; textFld6.Height = 300; c1FlexReport1.Sections.PageHeader.Fields.Add(textFld6); TextField textFld7 = new TextField();
textFld7.Name = "LblTitle"; textFld7.Text = "Title";