- PR -

CrystalReportでBoxObjectをデータにより動的に変更したい

投稿者投稿内容
gorisaku
ベテラン
会議室デビュー日: 2004/04/17
投稿数: 95
投稿日時: 2004-06-14 12:45
VS.NET(C#) + CrystalReportで開発をしております。
rptファイル上に配置したBoxObjectを
データにより動的に変更(ラインの太さなど)を変更したいのですが、
方法がいまいちわかりません。
どなたかご存知の方ご教授お願いいたします。
tetsuya11
常連さん
会議室デビュー日: 2003/11/08
投稿数: 37
投稿日時: 2004-06-14 14:10
質問の内容だけだと情報不足なので、
的を得ているかどうかわかりませんが、

BoxObjectではなく、TextObjectなら動的に境界線を
変更(ラインの種類、ラインの表示非表示等)できます。

例えば、あるデータの値が"1"の時に
シングルラインを表示させるには、配置したTextObjectを右クリックし
「書式」→[境界線]→[線のスタイル]の枠の中の [左]の横にある
[X+2] ボタンをクリックし、以下のような式を記入して保存します。

WhilePrintingRecords;
If {テーブル名.フィールド名} = "1" then
crSingleLine



他には、あらかじめライン等の画像を用意しておき
データの値によって「表示」するか「非表示」にするかを
動的にコントロールすることができます。

詳しい実現方法は、下記を御覧下さい。

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=11910&forum=7&1
gorisaku
ベテラン
会議室デビュー日: 2004/04/17
投稿数: 95
投稿日時: 2004-06-14 15:18
tetsuya11さん
早速のお返事ありがとうございます。

引用:

BoxObjectではなく、TextObjectなら動的に境界線を
変更(ラインの種類、ラインの表示非表示等)できます。

例えば、あるデータの値が"1"の時に
シングルラインを表示させるには、配置したTextObjectを右クリックし
「書式」→[境界線]→[線のスタイル]の枠の中の [左]の横にある
[X+2] ボタンをクリックし、以下のような式を記入して保存します。

WhilePrintingRecords;
If {テーブル名.フィールド名} = "1" then
crSingleLine



上記は既に参照済みであります。
(TextObjectならできることは確認済みなのですが・・・)
BoxObjectの編集には式を入力するエリアがないので・・・
ほかに何か方法があるのかと思いまして・・・
bubunya
大ベテラン
会議室デビュー日: 2003/01/16
投稿数: 124
投稿日時: 2004-06-19 23:39
データ毎に変更する事はできませんね。
デザインにもよりますが、セクションを複数用意し、データの値によって表示、非表示を切り替える方法が一般的だと思います。
ちょっと前のスレッドに YES と NO に丸を囲んだものを表示したいというのがありましたが、これもセクションの表示/非表示を利用していましたね。
gorisaku
ベテラン
会議室デビュー日: 2004/04/17
投稿数: 95
投稿日時: 2004-06-20 11:53
bubunya殿 お返事ありがとうございます。

引用:

データ毎に変更する事はできませんね。
デザインにもよりますが、セクションを複数用意し、データの値によって表示、非表示を切り替える方法が一般的だと思います。
ちょっと前のスレッドに YES と NO に丸を囲んだものを表示したいというのがありましたが、これもセクションの表示/非表示を利用していましたね。



やはりbubunya殿が書かれているようにしないといけないようです。
やりたかったのは、エクセルライクな帳票でセル?単位に色を変えて
カラープリンタに印刷するということなのですが・・・
TextObjectで行うと線がきちんとくっつかない為、グリットにならなかったのです。
BoxObjectでBoxを作成すれば上記問題はOKだったのですが・・・
今度は罫線の問題が・・・
色々難しいですね(困
何か良い方法は無いものでしょうか???
tetsuya11
常連さん
会議室デビュー日: 2003/11/08
投稿数: 37
投稿日時: 2004-06-21 10:42
引用:
--------------------------------------------------------------------------------
TextObjectで行うと線がきちんとくっつかない為、グリットにならなかったのです。
BoxObjectでBoxを作成すれば上記問題はOKだったのですが・・・
今度は罫線の問題が・・・

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

TextObjectのプロパティの「位置」の数値を変更することで
位置の微調整ができるので、線をうまく重ねることはできますよ。


gorisaku
ベテラン
会議室デビュー日: 2004/04/17
投稿数: 95
投稿日時: 2004-06-21 15:40
tetsuya11さん お返事ありがとうございます。

引用:

TextObjectのプロパティの「位置」の数値を変更することで
位置の微調整ができるので、線をうまく重ねることはできますよ。



TextObjectではなくてIFieldObjectでした。_(_ _)_
試しにTextObjectで行ってみましたが線はうまく重なりませんでした。
(太いところが出てしまいます)
tetsuya11
常連さん
会議室デビュー日: 2003/11/08
投稿数: 37
投稿日時: 2004-06-21 17:00
引用:
--------------------------------------------------------------------------------

試しにTextObjectで行ってみましたが線はうまく重なりませんでした。
(太いところが出てしまいます)

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

私のほうでは、(重なりが微妙にズレて)太いところが出ても
数値で微調整することでキレイに重なりましたが。。。。

IFieldObjectではないので、参考までに。

スキルアップ/キャリアアップ(JOB@IT)