レイヤーはコントロールの名前付きグループと考えることができます。これらのコントロールグループを追加または削除し、ロックするかどうか、および表示するかどうかを指定できます。新しいレポートを作成すると、既定レイヤーがレポートに自動的に追加されます。
レイヤーは以下の種類のレポートでサポートされています。
レイヤーを使用することにより、印刷済みの帳票のレイアウトを正確にトレースできます。この機能は、市販のスキャナーでスキャンしたトレースしたい帳票の画像をレイヤーに配置したり、そのスキャン画像を印刷に使用する場合に役立ちます。また、利用できる画像の形式は、BMP、JPEG、PNG、GIF、WMF、EMFとなります。
例えば、印刷済みのコンビニエンスストアの払込取扱票の用紙に顧客の名前や払込金額を印刷したい、という要件があるとします。払込取扱票の定型フォーマットの用紙はすでに手元にあり、顧客の名前や、払込金額などがデータベースに登録されています。レイヤーを使えば、これらの名前や金額をを払込取扱票の正しい位置に正しいスタイルで印刷できます。
手順 1: 払込取扱票の定型フォーマットの用紙をスキャンします。
スキャンした画像をレイヤーに配置し、名前の位置を決定するベース画像として使用します。
既定レイヤーは削除できないため、印刷済みフォームの画像を既定レイヤーに配置しないようにします。その代わりに、新しいレイヤーを追加してそこにスキャン画像を配置します。そうすると、スキャン画像を背景から除去する場合にレイヤーごと削除できます。
レイヤーに印刷済みフォームの画像を配置すると、トレースの準備は完了です。
手順2: 顧客の名前や、払込金額のフィールドを設定します。
既定レイヤーにTextBoxコントロールを配置し、レポートデザイナでデータソースにバインドします。スキャン画像のレイヤーを背景に表示することで、Nameフィールドや、Kingakuフィールドを正確な位置に簡単に配置できます。
手順3: 顧客の名前や払込金額を用紙に印刷します。
これで、フィールドが正しい位置に配置され、顧客の名前や払込金額のフィールドにバインドされました。最後の手順は実際の払込取扱票のプレプリント用紙に名前や金額を印刷することです。
払込取扱票の用紙を使用して印刷する場合、スキャンした払込取扱票の画像の置かれたレイヤーを印刷する必要はありません。これはレイヤーのTargetDeviceプロパティを使用して設定できます。
TargetDeviceプロパティはレイヤーごとに個別に適用され、Screen、Paper、Export、All、Noneの中から設定値を選択できます。詳細については、「出力デバイスの切り替え」を参照してください。この例では、プレプリントの払込取扱票の用紙に名前フィールドや金額フィールドなどを印刷するため、既定レイヤーのTargetDeviceプロパティをPaperに設定しています。
このシナリオでは、印刷済み払込取扱票でフィールドのレイアウトをトレースするためにレイヤーを使用しました。
さらに、レイヤーはこれ以外のシナリオでも役立ちます。
レイヤーは、既存のレポートに変更を加えずにレイアウトを少し修正したい場合にも利用できます。
レイヤーを使用すれば、オリジナルのレポートレイアウトを変更せずに同じレポートに修正を加えることができます。このユースケースについて売上領収書を例に説明します。
例
「顧客用」という透かしを入れてレポートのハードコピーを印刷し、「店舗用」という透かしを入れて同じレポートのソフトコピーをPDF形式でエクスポートするという要件があるとします。
オリジナルの売上領収書をテンプレートとして使用するため、既定レイヤーをロックします。この手順は、レイアウトに変更を加えたりコントロールを追加したりするときにテンプレートレポートの既存のレイアウトが変更されないようにするために必要となります。レイヤーをロックする方法については、「レイヤーの操作」を参照してください。
既存のレポートテンプレートに2つのレイヤーを追加し、1つを「顧客用」透かし画像用、もう1つを「店舗用」透かし画像用に使用します。売上領収書のハードコピーを印刷するため、CustomerレイヤーのTargetDeviceプロパティをPaperに設定します。MerchantレイヤーはPDF形式にエクスポートするので、TargetDeviceプロパティをExportに設定します。レイヤーをエクスポートする方法については、「出力デバイスの切り替え」を参照してください。
このシナリオでは、既存のレポートをテンプレートのレイヤーとして使用することにより、1つのレポートファイルに対して2つの異なる透かしを簡単に出力することが可能です。
レイヤーを使用して、印刷済みの帳票のレイアウトを複製できます。
顧客に送付する注文確認書を例として、レイヤーを使用してスキャン画像のレイアウトをどれだけ簡単に複製できるかを見ていきます。
例
複製する確認書のスキャン画像をLayer1に配置し、このレイヤーの DesignerLock プロパティをTrueに設定します。これにより、トレースする画像が誤って変更されなくなります。レイヤーをロックする方法については、「レイヤーの操作」を参照してください。
レポートを設計するとき、レポートのレイアウト、データ、ロジックを分離することをお勧めします。この例では、ロゴ、ヘッダ、フッタなどの静的なラベルはすべてLayer2に配置し、データバインドされたフィールドは既定レイヤーに配置しています。これは特に、納税申告書、規制通知、船荷証券様式などの複雑なレポートレイアウトを設計するときに役立ちます。別々のレイヤーで作業すると、静的なラベルやバインドされたデータフィールドといったレポートの一面を修正するときにレポート全体のレイアウトを修正しなくて済むため、レポートの設計が簡単になります。
既定レイヤーには、ProductID、Price、StorePriceなどのデータバインドフィールドを配置します。Layer1に配置したスキャン画像が背景に表示されるように、DesignerTransparencyプロパティの値をLayer2(上の図)と既定レイヤー(下の図)、それぞれで0.5に設定しています。
レイアウトの複製に使用するレイアウト(Layer1のスキャン画像)が不要になったら、Layer1のDesignerVisibleプロパティをFalseに設定してレイヤーを非表示にするか、このレイヤーを削除します。DesignerVisibleプロパティを使用すると選択したレイヤーにあるコントロールの表示/非表示をすばやく切り替えることができるので、レイアウトの正確さを確認するのに便利です。この例では、最終出力のレイアウトを確認するため、Layer1の[表示]をオフにしています。
このシナリオでは、スキャン画像のレイアウトを複製するため、およびレイアウトとデータを分離してレポートの構成をより良くするために、レイヤーを使用しました。