SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

ComponentZine(ComponentOne)

テキストデータから印刷ドキュメントを作成する.NETアプリケーションに表機能を追加する

続・ComponentOne StudioのReports for Windows Formsを使ったWindowsアプリケーションの作成

  • このエントリーをはてなブックマークに追加

C1PrintDocumentコントロールのテーブル機能について

 C1PrintDocumentコントロールのテーブルは、ドキュメントを作成する際に最も便利な機能の1つで、論理的に無限の列数と行数を持つExcelスタイルのオブジェクトモデルをサポートします。

 テーブルを使うことでデータを表形式で表したり、イメージ画像や図形などドキュメント内の他の要素をレイアウトするために使用できます。テーブルはセルで構成され、テーブル内のすべてのセルはTableCellCollection型を持つCellsコレクションによって表され、行列番号を使ってアクセスできます。

Visual Basic
Dim tc as TableCell = table1.Cells(10, 4)
C#
TableCell tc = table1.Cells[10, 4];

 テーブルのセル、列、および行は、表示オブジェクトではありませんが、表示オブジェクトのプロパティに類似したいくつかのプロパティを備えています。セルの背景色やフォント、文字色、枠線などの属性を設定するには、StyleプロパティやCellStyleプロパティを使用し、それぞれの属性に該当するプロパティを変更します。

Visual Basic
table1.Cells(0, 1).CellStyle.BackColor = Color.BlueViolet
table1.Cells(0, 1).Style.TextColor = Color.Beige
C#
table1.Cells[0, 1].CellStyle.BackColor = Color.BlueViolet;
table1.Cells[0, 1].Style.TextColor = Color.Beige;

 また、デフォルトではテーブルにグリッド線はなく、その都度設定します。

 作成されるテーブルのサイズですが、幅はドキュメントの幅と同じ幅になり、デフォルトではすべての列の幅が同じになります。行の高さは、セルに入力されるデータによって自動的に設定されます。もちろん、列幅や行の高さを任意のサイズに設定できますが、テーブル全体の幅はドキュメントの幅を超えることはありません。

アプリケーションの構成

 では、さっそくアプリケーションを作成していきましょう。今回は、前回の記事で作成したプロジェクトにページを追加して図形描画とテーブルを作成するので、Windowsフォームに変更はありません。使用するコントロールは、C1PrintDocument/C1PrintPreviewControlコントロールだけです。

作成するWindowsフォーム
作成するWindowsフォーム

改ページの挿入

 まず、ドキュメントに改ページを挿入して新しいページを追加し、そこにページのタイトルを図形描画で設定します。

 改ページは、RenderObjectクラスの「BreakBefore」「BreakAfter」プロパティを使用します。「BreakBefore」プロパティはオブジェクトの前に、「BreakAfter」はオブジェクトの後ろにページ区切りを挿入します。各プロパティには、以下のBreakEnum列挙体のメンバを指定します。

BreakEnum列挙体のメンバ
メンバ名 説明
None 0 区切りなし
Page 1 新しいページが開始されます
Column 2 新しい列が開始されます
Line 3 インラインフローで新しい行が開始されます

 ここでは、空白のRenderTextオブジェクトを作成し、BreakBeforeプロパティを使ってこのオブジェクトの前にページ区切りを挿入します。設定値は、「BreakEnum.Page」です。次に、作成したRenderTextオブジェクトをドキュメントのBodyセクションに追加します。

Visual Basic
'*************** 2ページ目を追加 ***************************

'ページ区切りの作成
Dim rt1 As New RenderText
rt1.Text = ""
rt1.BreakBefore = BreakEnum.Page
Me.C1PrintDocument1.Body.Children.Add(rt1)
C#
//*************** 2ページ目を追加 **************************

//ページ区切りの作成
RenderText rt1 = new RenderText();
rt1.Text = "";
rt1.BreakBefore = BreakEnum.Page;
c1PrintDocument1.Body.Children.Add(rt1);

次のページ
グラフィックスの描画

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
ComponentZine(ComponentOne)連載記事一覧

もっと読む

この記事の著者

瀬戸 遥(セト ハルカ)

8ビットコンピュータの時代からBASICを使い、C言語を独習で学びWindows 3.1のフリーソフトを作成、NiftyServeのフォーラムなどで配布。Excel VBAとVisual Basic関連の解説書を中心に現在まで40冊以上の書籍を出版。近著に、「ExcelユーザーのためのAccess再...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/5525 2010/10/26 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング