喫茶XRAYトップページ

[スレッド全体
]

[4197] QuickReportでのプリンタ設定 まとめ返信 削除
2011/1/10 (月) 20:17:18 Mr.XRAY
QuickReportで,主に印刷の際のプリンタの設定に関することです.
ソースコードが手元にないので,提供サイトとヘルプ,今回のテスト結果
から判断できる内容です.

QuickReportでは,内部で印刷の際にプリンタオブジェクトを独自に作成
して設定する(印刷するまでは生成されない)

デフォルトでは,「通常使用するプリンタ」のデフォルト値が採用される
オブジェクト・インスペクタの

[Page]
[PrinterSettings]

プロパティで設定する.
例えば,[4166]のように,

  QuickRep1.Printersettings.printerindex:=
                            printer.printers.Indexof('EPSON PM-760C ESC/P R');
  QuickRep1.Page.PaperSize := A5;
  QuickRep1.Page.Orientation := poLandscape;


と,Pageプロパティで設定可能な値は設定が可能な.
もちろん,設定する値は,そのプリンタドライバがサポートしている場合に限る.
ドライバがサポートしていない値は無視され,デフォルト値が採用される.

ネット上ではよく
QuickRep1.PrinterSettings.PaperSize
というのを見かけるが,ヘルプでは上のようなサンプルコードとなっている

QuickReportが内部で持っていないプロパティ値の場合は,例えば[4174]のように,

  QuickRep1.PrinterSettings.CustomBinCode := 259;
  QuickRep1.PrinterSettings.UseCustomBinCode := True;
  QuickRep1.Prepare;
  QuickRep1.Preview;
 
CustomやUseCustom...を使用する.
もちろん,これも,そのプリンタドライバがサポートしている値に限る
それでも設定できない項目,PageやPrinterSettingsにない項目等は,
目的のプリンタを,[通常使用するプリンタ]に設定して,必要に応じてDEVMODE構造体
を設定してから,印刷する.印刷後,設定を元に戻す.この方法も[4174]参照

ということになるようです.
対象のプリンタドライバがサポートしている値等は以下で確認できる.
http://mrxray.on.coocan.jp/Delphi/plSamples/012_PrintResolution.htm


[4198] Re:QuickReportでのプリンタ設定 まとめ返信 削除
2011/1/10 (月) 20:44:46 Mr.XRAY
QuickReportでプリンタや用紙設定がうまく行かない現象を「バグ」と
表現している記事があるが,必ずしもそうともいえない気がします.

>QuickReportでは,内部で印刷の際にプリンタオブジェクトを独自に作成
>して設定する(印刷するまでは生成されない)


これは,プリンタドライバーがインストールされていない環境でも,帳票の
設計が可能です.
一方,拙作の印刷プレビューコンポは,プリンタ,用紙の設定を,プリンタ
ドライバーから取得するために,設計時にも実行時にもプリンタドライバが
必要です.
昔,プリンタドライバーがインストールされていない環境でエラーが発生
して困るというので,ない場合はA4縦でけで表示するようにはしました.

この設計時にプリンタドライバーがなくても設計が可能ということは,
プリンタや用紙の設定情報を内部でもつ必要があります.
これが,実際のプリンタドライバーの機能,仕様と一致させるというのが
1つの課題なんだと思います.
つまり,プリンタドライバーがもつ固有のプロパティは設定できないことに
なります.
「通常使用するプリンタ」にして設定するとしても,DEVMODE構造体で設定
可能な値に限られることになります.


[▼次のスレッド]
INCM/CMT
Cyclamen v3.82