[CrystalReports]データ長さに応じてフォントサイズを調整するnanoblog(ナノブログ)HomeWordPressJavaScriptC#読書メモ電子回路RSS[CrystalReports]データ長さに応じてフォントサイズを調整する2012年4月26日CrystalReportsを使用して帳票印刷を行う際、印字するテキストが長すぎてフィールドの枠内に入りきらない場合、印字が欠けてしまいます。Reportsには、これと同じ機能は有りません。Reportsで、印字するデータの長さに応じてフォントサイズを調整させる方法を説明します。データ長に応じたフォントサイズを指定する今回の例では、下記帳票レイアウト(.rptファイル)内にある、Nameフィールドのフォントサイズを調整してみます。ちなみにこの項目はデータセットのRepAddressLabel.Nameフィールドにバインドされています。Nameフィールドを右クリックし、オブジェクトの書式設定を選択します。フォントタブの、サイズの横にある”x+2′′と書かれた小さいボタンをクリックします。式ワークショップウィンドウが表示されるので、以下の式を入力します。9これは、プログラム側でセットされたRepAddressLabel.Nameフィールドのデータ長が、24文字未満の場合は12ポイント、28文字未満の時は10ポイント、それ以上の場合は8ポイントにフォントサイズを変更させる事を意味します。(各ポイントで何文字分の印字が可能かは試行錯誤して求めます...)この設定を行った後にプログラムを実行すると、確かに指定した文字数以上でフォントサイズが切り替わるようになりました。2バイト文字を含む項目に対応するただ、ここで注意が必要なのはLength()関数は文字のbyte数ではなく、文字数を返す事です。この為、上記例のように全角と半角が混在する場合、ちょうど良い位置でフォントサイズを切り替える事ができなくなってしまいます(半角しか表示されない項目の場合は、前述の方法で問題ないです)。Reportsの式として用意されている関数にはバイト数を取得する方法がありません。この為、本問題に対処するためにはプログラム側からデータのbyte数を隠し列として渡してあげる必要があります。下記の例はC#側でデータセットに印字内容をセットする処理です。Name_LenBというフィールドに,プログラム側でデータ長をセットしています。);その上で、該当フィールドの式ワークショップで、式を以下のように変更します。9これで、2バイト文字を含むデータでも、適切にフォントサイズを調整出来る様になります。コメントをキャンセルメールアドレスが公開されることはありません。29お勧め書籍webアプリのセキュリティ対策の為に。