またまた質問ですみません。
Delphi2005、QuickReport4.07の環境で
用紙の任意サイズ指定を実行したところ、用紙方向を横に指定しても
縦の状態でプレビューが表示されてしまいます。
以下のようなプログラムを作成して実行しています。
repTest.QuickRep1.Page.PaperSize := Custom;
if (PaperOrient = DMORIENT_LANDSCAPE) then begin
repTest.QuickRep1.Page.Orientation := poLandscape;
repTest.QuickRep1.Page.Width := 1030;
repTest.QuickRep1.Page.Length := 728;
end
else begin
repTest.QuickRep1.Page.Orientation := poPortrait;
repTest.QuickRep1.Page.Width := 728;
repTest.QuickRep1.Page.Length := 1030;
end;
repTest.QuickRep1.Preview;
何卒ご教授をお願いいたします。
デフォルトプリンタの用紙サイズも合わせないといけなかったと記憶しています。
縦状態でプレビューされるのはプリンタがA4縦になっているからではないでしょうか?
今の環境ではデフォルトプリンタの用紙方向は横になっています。
デフォルトプリンタの用紙サイズを合わせるということは
DEVMODE構造体に
dmOrientation=DMORIENT_LANDSCAPE
dmPaperSize=DMPAPER_USER
dmPaperWidth=1030
dmPaperLength=728
を設定して、SetPrinter()を行うということでしょうか?
まずA4用紙サイズがいくつなのかをプロパティで確認したほうがいいですね。
画面サイズと用紙サイズを混同しているように見えます。
QuickReportでカスタムサイズの用紙を印刷するのは大変です。
通常(QuickReportで選べる用紙サイズ)なら何の問題もありませんが、
カスタムサイズの場合、プリンタのプロパティで使うカスタムサイズを設定し、標準で使用する用紙サイズに設定しておく必要が有ります。
プログラムを使う場合(開発する)は、設定をしなおしておく必要が有ります。
これでは他のソフトを使用するときに不便なので、カスタムサイズを使用するプリンタを追加します。
ナナシ様、かず様アドバイスありがとうございます。
カスタムサイズの用紙を印刷するのは大変なのですか?
カスタムサイズを使用するプリンタを追加するとした場合、
TQuickRepのPageプロパティの設定はどうなるのでしょうか?
またPrinterSettings.PrinterIndexは印刷前に追加したプリンタの
インデックスを指定することでよろしいのでしょうか?
もしかして、カスタムサイズ指定プリンタをデフォルトプリンタに
しておかなければならないのでしょうか?
印刷って難しいですね。
たかのんさんの求めている回答になっていませんね。
私の場合、難しい事が分からないので、対処法と言うことで
プログラムを使う(開発する)まえに、カスタムサイズ用に作ったプリンタを通常使うプリンタにします。
QuickReportのほうは印刷するカスタムサイズ(縦横大きさ)指定して置きます。カスタムサイズの場合用紙方向の指定は意味をなさなかったような記憶です。サイズを指定しているから。
使う前プリンタ、QuickReportの用紙サイズをあわせる必要が有ります。
私の場合PrinterSettings.PrinterIndexはプリンタの切り替えにしか使っていません。用紙関連の設定は変更しても受け付けない、QuickReportの設定が優先しています。これ当たり前ですよね。用紙サイズ勝手に変えられたら、設計した帳票が出ないことになる。
プレビューしたときQuickReportで選べる用紙サイズなら問題なくプレビューできます。
カスタムはプリンタの情報を持ってきてプレビューしているようで、QuickReportの設定を変えてもどうにもならなかったです。
DEVMODE構造体などは分からないので試しておりません。
かのうなら、逆に知りたいです。
以上参考になりましたでしょうか?
カスタムサイズの用紙をプリンタが認識していますか?(これ重要)
ご指定のサイズだと縦103cm×横72.8cmもしくは縦72.8cm×横103cm
になると思います。
参考までにA4縦のサイズは縦29.7cm×横21cmです。
>>TQuickRepのPageプロパティの設定はどうなるのでしょうか?
「用紙のサイズ」です。
返信が遅れましてすみません。
かず様の内容から考えますと、用紙をカスタムサイズ指定する場合
事前に用紙をカスタマイズしたプリンタをOSで追加しておき、
それを通常使うプリンタに指定することでうまく印刷プレビューが
できるということですね。
ただし、QuickReportの用紙サイズも事前にプリンタと同じにする
必要があると。
カスタマイズな用紙設定なのに、用紙サイズが固定になってしまうのは
許されるかどうか分かりませんが、これでテストしてみます。
テスト結果はまた後で報告します。
かず様ありがとうございます。
これより良い方法がありましたら教えていただけると嬉しいです。
ナナシ様
今回行おうとしているのは用紙サイズをA4と固定しているわけではありません。
ただ、カスタマイズする用紙サイズをプリンタが認識しているかどうかは
確認してみないとダメですね。これは確認してみます。
アドバイスありがとうございます。
ツイート | ![]() |