A4の用紙にクイックレポートを使って以下のような罫線と
罫線内に文字を入れたいのですが、
データはリスト順ですが、
左の段の上から下、中央の段の上から下、右の段の上から下の
順番で一枚に出力したいのですが
どうすればよいのでしょうか?
クイックレポート以外でもっとよい方法があれば教えてください。
┏━━━━━━━━━━━━━━━━━┓
┃ タイトル ┃
┣━━━┯━┳━━━┯━┳━━━┯━┫
┃項目 │ ┃項目 │ ┃項目 │ ┃
┣━┯━┿━╋━┯━┿━╋━┯━┿━┫
┃ │ │ ┃ │ │ ┃ │ │ ┃
┠─┼─┼─╂─┼─┼─╂─┼─┼─┨
┃ │ │ ┃ │ │ ┃ │ │ ┃
┠─┼─┼─╂─┼─┼─╂─┼─┼─┨
┃ │ │ ┃ │ │ ┃ │ │ ┃
┠─┼─┼─╂─┼─┼─╂─┼─┼─┨
┃ │ │ ┃ │ │ ┃ │ │ ┃
┗━┷━┷━┻━┷━┷━┻━┷━┷━┛
フォントで罫線を実現するならば、FixedSysのような固定長にしないとむりだなーこれ。
もう一つの方法は、PrintersユニットのPrinter関数と言うのがあって、このPrinterのCanvasはTBitmapのそれに似ていての、線が引けたり、文字を書いたりできるわけなのじゃ。
フォースじゃよ。
出力イメージをテキストの罫線を使用して
書いてみたのですが、
すみません、表示が(ずれて)おかしくなるみたいですね。
書き込み時は並んでいたのですけど。
QuickReportを使ってまず最初に
リストにある文字列の1行データからデータを
3つ取り出し、左上に描画します。
次に下の行に行き2番目のデータを表示します。
繰り返して行い。下の段まで行けば次に
真ん中の列の先頭からデータを続けて表示し、
下まで行けば最後に右の列の先頭からデータを書いて
最後まで描画し、プリントアウトしたいのです。
テキストの罫線を表示したいわけではありません。
あくまでも、イメージを表示したかったのです。
申し訳ありませんでした。
ふむ氏の説明しているPrinter.Canvasは、マヤさんのやりたいことをやってくれますよ。勉強してね。
一レコード分として3行が一セット。
それを縦にずらりと並べて1列。
これを1ページに3列と・・・。
とすれば・・・
TQuickRep をフォームに貼り付け
QuickRep.Page.Colums := 3 に変更(これで三列完成)
QuickRep.Bands.HasTitle = True または QuickRep.Bands.HasPageHeader = True あたりで、タイトル作成
必要なら、項目の部分もヘッダーに入れる
QuickRep.Bands.HasDetail = True にして、
「3行が一セット」分としてTQREdit(だっけ?)を三つ縦に並べる。
あとは、OnNeedDataを使って、リストが空になるまで処理する。
多少古いバージョンだが、よく似たもんじゃろ。
少し重くなりますがずぼらな方法があります。
1:罫線をワープロなどで(手書きOK)作成し適当なレートでスキヤンする。
2:クイックレポートにイメージコンポーネントを使い貼り付ける
3:好きな位置にQRLabel等を貼り付け一丁上がり。
この手は一部プリンタで印刷できない場合がありますが出来合いの規定フォーム
をスキャンして綺麗に出来ます。
印刷できなかったプリンタ(リコー、ゼロックスの古い機種)DocuWorksの旧バージョン
もう一つベテランに怒られそうだが簡単な方法!!
デテールバンドに罫線枠の一行分の項目数のQRShepeを貼り
Pen.Styleで線種を決め Pen.Shape をgrsRectangleに設定
その上にQRDBLabelなどを貼り付けるとOK!
QRshepeの大きさを適当に決めると綺麗な表が出来上がります。
わが社の伝票はこの手で作成しました
QuickReportだけでも処理できるけどコンポーネントもいくつかでています。
例えば
http://www6.airnet.ne.jp/~sone_san/delphi/cgi-bin/ssi.cgi?database.html#DA0014
QRShapeでも出せるけど位置合わせが結構面倒ですね
Printer.Canvasに位置指定して、Printer.BeginDocで始めれば、
右側で上から下、中央で上から下、、右側で上から下と書いても
最後にEndDocすればOK.
ツイート | ![]() |