none
クリスタルレポートのテキストボックスの動的配置の変更について RRS feed

  • 質問

  •  

    いつもお世話になっております。

    クリスタルレポートについての質問をさせて頂きます。

     

    クリスタルレポートのデザイン上に複数のテキストボックスを配置し、

    プレビューで表示する時に、各明細行毎にテキストボックスの値によって、

    各テキストボックスの印刷位置(左開始位置と上開始位置)を制御する事は可能なのでしょうか。

     

    OS:WindowsXP

    開発言語:VB(Winフォーム)

    クリスタルレポート:CrystalReport for VisualStudio 2005

     

    例)

    データ:

    項目01   項目02   項目03   項目04

    ------------------------------------------------------------------

     01      02      03      04

     01      02      

     01              03        

             02              04

                     03        

    ------------------------------------------------------------------

     

    デザイン:

    詳細セクション

    ------------------------------------------------------------------

    項目01   項目02   項目03   項目04

    ------------------------------------------------------------------

     

    プレビュー:

    詳細セクション

    ------------------------------------------------------------------

     01      02      03      04

    ------------------------------------------------------------------

     01      02      

    ------------------------------------------------------------------

     01      03                       ← 項目02をつめる

    -----------------------------------------------------------------

     02      04                       ← 項目01と項目03をつめる

    ------------------------------------------------------------------

     03                               ← 項目01と項目02をつめる

    ------------------------------------------------------------------

     

    以上、よろしくお願い致します。

    2008年7月15日 8:16

回答

  •  

    いつもお世話になっております。

    じゃんぬねっとさん、返信有難うございます。

     

    やはり厳しいですか。
    以前の構想では「1行に1データ(項目)」だったのですが、
    やはり「フォントによってはズレル」との事で複数項目を用意し、印刷位置を制御する事になりました。

    別のツールを使用している帳票では、印刷位置の動的な変更は可能だったので
    クリスタルレポートでも同様な事が可能なのかが判らなかったので質問させて頂きました。

     

    どうもありがとうございました。

    2008年7月15日 12:09

すべての返信

  • ReportDefinition.ReportObjectsを使って可能だと思います。

     

    ReportDefinition.ReportObjects("Field1").Left

    2008年7月15日 9:46
    モデレータ
  • 1 行が 1 データしかないのであれば、オーバレイを使えば簡単にできると思います。

     

    今のデータの持ち方では位置をどうこうするだけでは対応は厳しいですね。

    前の行の状態によって変わるし、2 行以上歯抜けの列ができると非常に面倒なのは目に見えています。

    現在の行数を列ごとに維持したとしても、プリンタ ドライバ依存でずれることもあります。

    2008年7月15日 9:49
  •  

    いつもお世話になっております。

    じゃんぬねっとさん、返信有難うございます。

     

    やはり厳しいですか。
    以前の構想では「1行に1データ(項目)」だったのですが、
    やはり「フォントによってはズレル」との事で複数項目を用意し、印刷位置を制御する事になりました。

    別のツールを使用している帳票では、印刷位置の動的な変更は可能だったので
    クリスタルレポートでも同様な事が可能なのかが判らなかったので質問させて頂きました。

     

    どうもありがとうございました。

    2008年7月15日 12:09
  • 要求されていることを実現するのであれば、印刷位置の移動というより、データを左詰めにしたデータテーブルを作成し、それをレポートソースにすればいいんじゃないかと思います。

    2008年7月15日 16:51
    モデレータ
  • 別に不可能なわけではないですよ。

    レポートの DataSource さえ途中で何とかできれば良いだけです。

     

    たとえば trapemiya さんのフォロー案もそのひとつです。

    2008年7月16日 6:27
  • trapemiyaさん、返信有難うございます。

     

    >データを左詰めにしたデータテーブルを作成し、それをレポートソースにすればいいんじゃないかと思います。

    帳票のコントロールを制御するよりかは、データテーブルに格納する位置を変える方が早いですね。

     

    ですが、考えていたのは、テキストボックスの制御だけではなくピクチャボックスでも同様の制御を行おうとしていました

    (レポートに連結したデータのフラグによって、印刷位置を制御しようとしてました)。

    2008年7月17日 5:59
  • 了解しました。

     

    ちなみにイメージもデータテーブルに入れておき、それをクリスタルレポートで表示することができますので、テキストと同じ手法が使えます。

    こういう感じでイメージを表示しないのであれば、ごめんなさい。

    2008年7月18日 1:04
    モデレータ
  •  

    >ちなみにイメージもデータテーブルに入れておき、それをクリスタルレポートで表示することができますのでテキストと同じ手法が使えます。

     

    了解しました。

    データテーブルのコラムにバイトを設定し、画像ファイルを取り込む方法ですね。

    画像ファイルの取込が大変なので、画像ファイルを帳票上に配置しておき、表示・非表示と配置位置を制御して

    楽をしようとしていました。

    2008年7月18日 4:35