C++Builder5で、QuickReportとドットプリンタを使って、領収書を印刷するようなアプリを作成しています。ところが、用紙サイズが独自なので、任意の用紙サイズを指定しようと、Printメソッドの前に


Printer()->GetPrinter( p_name, p_drv, p_port, devm );
dmw = (TDevMode *)GlobalLock( ( HGLOBAL )devm );
dmw->dmOrientation = DMORIENT_PORTRAIT;
dmw->dmPaperLength = 2670;
dmw->dmPaperWidth = 1950;
dmw->dmPaperSize = 0;
GlobalUnlock( ( HGLOBAL )devm );
Printer()->SetPrinter( p_name, p_drv, p_port, devm );

の様にして用紙サイズを明示的に与えているにもかかわらず、ドットプリンタが指定した用紙長分の紙送りをしてくれず、連続で印刷するとどんどん印刷位置が(縦方向)ずれてしまいます。

おそらく用紙サイズが適切に設定できていないと思うのですが、どうすれば適切にサイズが設定されるようになるのでしょうか?

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2006/08/22 21:55:04
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:kurukuru-neko No.1

回答回数1844ベストアンサー獲得回数155

ポイント35pt

あまり印刷には詳しくありませんが。

指定は間違っていないと思いますが。

改ページでずれているように思います。

スタート→プリンターとFAXを選択して

メニュ→サーバーのプロパティーで

用紙でその用紙のサイズを指定してプリンターに

割り当て。

又は、

プリンターのプリパティーの印刷設定で

使用する用紙のサイズを作成してプリンターに

割り当て。

印刷用紙を規定値を設定した状態で印刷して

みてください。

印刷に関する注意

連続帳票用紙に印刷するためには、その用紙の改ページ幅を

設定できるプリンタドライバが必要です

http://www.yayoi-kk.co.jp/products/download/Payroll9.html

http://www.100per-printer.jp/index.html

id:tecra

回答ありがとうございます。プリンタの方で用紙サイズを指定しても、印刷結果には反映されないようです。ちなみに、QuickReportで用紙サイズを変更すると、その用紙サイズに従った紙送りがされるのですが、任意サイズを指定すると、指定したサイズではない長さで紙送りされてしまいます。

2006/08/16 23:03:26
id:kurukuru-neko No.2

回答回数1844ベストアンサー獲得回数155

ポイント35pt

上の例ではDEVMODEの初期化として

"dmFields"の内容はどうなっていますか?

DM_PAPERSIZE

DM_PAPERLENGTH

DM_PAPERWIDTH

のフラグはオンですか?

一度DEVMODEの全内容を確認してみてください。

dmFields

dmColor

dmDuplex

dmYResolution

dmTTOption

dmTTOption

http://msdn.microsoft.com/library/default.asp?url=/library/e...

http://www.microsoft.com/JAPAN/developer/library/vcmfc/_mfc_...

id:tecra

dmFieldsの存在に気づいていなかったですね…。以上3つのビットを立てればよいのでしょうか?

2006/08/18 00:25:30

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません