掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
QuickReportで枠内に入るように文字の大きさ調整 (ID:29010)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
ジュウザさん >不可解な現象が発生します。 >プレビューだと〜ちょうどいい大きさで印字されます。 >実際の印刷だと〜最初の値から全く変わらずに無限ループに入ります。 ええと、プレビューはともかく、実際の印刷については不可解ではない ような気がします。 ofZさん >印刷中のフォントサイズ変更に反応しないバグなんだろうか? 正確には「印刷直前にwidthを取得、これを変更してTQRDBTextを再生成」 ではないでしょうか? プレビューであれば(画面上で何度でも再描画できるんじゃないかな? 人間の目にその過程が見えるかどうかは不明ですが)、 1.Text生成→2.width取得→3.Phontsize変更→4.Text再生成(?) →2.に戻る(以下ループ) 以上をやってから、 .Preview できると思います。 でも、プリンタに物理的に印刷出力する直前に上記1.をやるわけですよね。 で、まさに .Print する瞬間に上記2.ができたとして、そこで印刷出力 する動作にWaitをかけ、ループしてから印刷出力を解放するという処理が 必要だと思います。 そんな制御ができるのでしょうか? 文字列の数は、予め取得する事ができますよね。 でも、TQRDBText(Sender).Width は、生成されて初めて取得できる値では ないでしょうか? 私なら A.ダミーのQuickReportにTQRDBTextを用意し、そちらで上記ループで .Width を計算し、結果を実QuickReportに代入する。 B.Preview画面まではジュウザさんのコードで実現できているから、Preview したQuickReportを一旦 .qrp形式Fileに保存してから、この .qrpを呼び出して、 Print する。 C.等幅フォントを使用して、文字数から最適なフォントサイズを割り出す。 のいずれかを考えます。 A.は想像のレベルです。 B.は過去に似たようなことをやったので多分できるはず。(今Delphi環境が ないので) QuickReportの保存〜呼び出しについては、必要なら実働 ソースを貼りますよ。 C.が一番現実的かなあ?
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.