CommonDialog1.Flags = cdlPDPrintSetup としてコモンダイアログで印刷設定フォームを開き、プリンタの変更を行った後印刷する場合があります。
アプリケーションを立ち上げて、何も印刷していない状態でプリンターを変更すると、変更後のプリンターに印刷されます。ところが1回印刷を行った後は、何回プリンターを変更しても、最初に使用したプリンターにしか印刷できません。 Printer.DeviceName で確認すると確かに最初に使用したプリンターになっておりコモンダイアログに表示されているプリンターとは異なっています。(VB6、WindowsXP)
CommonDialogコントロールで設定されたプロパティなどの値を、
Printerオブジェクトにいつどのように反映させていますか?
コメントありがとうございます。CommonDialogで設定されたプロパティ、例えばページ数、等はプリンター制御プロシージャには何も反映させていません。CommonDialogを使用する私の目的は、単に出力するプリンタを選択するという目的のみに使用しており、プロパティはプリンターオブジェクトに反映させていません。プリンターオブジェクトにプリンターを変更したプロパティを設定しないといけないのでしょうか?
1回目の印刷を行う前のプリンタ変更においては、CommonDialogを閉じた後制御がすぐにアプリケーションに戻ります。しかし、印刷を行った後のプリンタ変更においては、CommonDialogを閉じた後制御がなかなかアプリケーションに戻りません。(何かの処理を長々と行っているように感じます。)結局、CommonDialogに表示されているプリンタ名称は変更されていますが、Printer.DeviceName で確認したプリンタ名称は変わっていません。
何卒、よろしくお願いいたします。
CommonDialog1.PrinterDefault の設定は、どちらにしているのですか?
コメントありがとうございます。
CommonDialog1.PrinterDefaultは"true"に設定しています。CommonDialogが貼り付けられているフォームのLoadイベントで設定しています。
念のためCommonDialogを閉じた直後に走るプロシージャにも入れています。
"FALSE”にしてもだめでした。(当たり前か・・・)
最初の質問に記載した症状は、アプリケーションを一旦終了し、再起動した直後には変更したプリンターに印刷が行われます。それをもう一度変更しようとするとやはりできません。
ツイート | ![]() |