名前 題名 ▼ Syakeさん > ご無沙汰でございます。 > 当地でもめっきり寒くなりました。 > あれほど暑かった夏が・・・。 > > ところで、印刷プレビューしてMicrosoft Print to PDFを選択後に「OK」 > ファイル保存で「キャンセル」で「プリンタは現在印刷を行っておりません」 > の例外を速攻で吐くという現象があります。 > 私の問題は「23/3/22:plPrevで印刷ができなくなる」とは少々異なります。 > 実際のところ、例外が発生する事は数年前にはわかってはいたのですが > おざなりにしておりました。 > > procedure TCustomplPrev.Print; > {---- 略 ------} > Printer.BeginDoc;//←ここで保存ダイアログが開く > {保存ダイアログをキャンセル後も以降は継続される} > FPrinting := True; > Screen.Cursor := FCursor; > try > for i := FromPage to ToPage do > begin > ScaleInitialize(Printer.Canvas,False);//例外発生 > {---- 略 ------} > end; > finally > SetMapMode(Printer.Canvas.Handle, MM_TEXT); > Printer.EndDoc; > Application.ProcessMessages; > FPrinting := False; > Screen.Cursor := SaveCursor; > end; > {----- 略 ---------} > end; > > で、保存ダイアログをキャンセルするとPrinter.PrintingはFalseの > ままなので、処理が継続されると例外が発生しますので以下の様に > 記述を追加してみました。 > > procedure TCustomplPrev.Print; > {---- 略 ------} > Printer.BeginDoc; > if Printer.Printing then //←条件追加 > begin > FPrinting := True; > Screen.Cursor := FCursor; > try > for i := FromPage to ToPage do > begin > ScaleInitialize(Printer.Canvas,False);//Printerが印刷中でない為ここで例外 > {---- 略 ------} > end; > finally > SetMapMode(Printer.Canvas.Handle, MM_TEXT); > Printer.EndDoc; > Application.ProcessMessages; > FPrinting := False; > Screen.Cursor := SaveCursor; > end; > end; > {----- 略 ---------} > end; > > 一応、問題なく働いてくれてますがこんなもので、良いのでしょうか(^-^; GIF,JPEG,PNG画像ファイル及びLZH,ZIPファイルをアップロードできます.600 x 1200 ピクセルを超える画像は縮小表示されます(画像クリックで拡大表示). (上限122000(120k)バイト) 削除キー Link