掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
プリンターの用紙変更をするには? (ID:37891)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
いつも参考にさせていただき有難うございます。 プリンターで2種類のサイズに印刷するのですが、2回目に用紙サイズを設定しようとすると、GlobalLockの戻り値がnilに成ります。 プリンターの終了処理が悪いのですか、教えて下さい。 XP D4です。 ADevice, ADriver, APort: array[0..512] of Char; ADeviceMode: THandle; ADevMode : ^TDevMode; procedure TForm1.PriBtnClick(Sender: TObject); Printer.GetPrinter(ADevice, ADriver, APort, ADeviceMode); if ADeviceMode <> 0 then begin ADevMode := GlobalLock(ADeviceMode); //***2回目ここでnilになる if (P_No.ItemIndex = 0) then begin // 用紙1 ADevMode^.dmPaperLength := Trunc(Inc_Pix * 4.5); ADevMode^.dmPaperWidth := Inc_Pix * 9; end else begin ADevMode^.dmPaperLength := P_Round(Inc_Pix * 4.0); ADevMode^.dmPaperWidth := P_Round(Inc_Pix * 7.5); end; GlobalUnLock(ADeviceMode); Printer.SetPrinter(ADevice, ADriver, APort, ADeviceMode); ・ ・ Printer.BeginDoc; // 印刷処理開始 Printer.NewPage; ・ ・ Printer.EndDoc; // 終了 DeleteObject(Printer.Canvas.Font.Handle); if ADeviceMode <> 0 then begin GlobalUnlock(ADeviceMode); GlobalFree(ADeviceMode); ADeviceMode := 0; end; DeleteDC(W_PHand); end; end;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.