掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
プリンタ設定 (ID:29746)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
Mr.XRAYさんのおっしゃるように用紙のサイズ(幅/長さ)を取得する事はあっても、 DMPAPER_A4のような定数を取得する場面というのはまずありません。 何故ならDevMode.PaperSizeにDMPAPER_USERが返って来た場合には、 結局、用紙のサイズ(幅/長さ)を取得しなければならなくなるからです。 それでも...と仰るのであれば以下のソースを参考にしてみて下さい。 procedure TForm1.Button1Click(Sender: TObject); var PrinterName, PrinterDriver, PrinterPort: array[0..MAX_PATH] of Char; DevMode: PDevMode; Dev: TDevMode; Hnd: THandle; dCopies: Integer; dPrintRange: TPrintRange; dFromPage, dToPage: Integer; dPaperSize, dPaperLength, dPaperWidth, dOrientation: SmallInt; begin // (処理) if PrintDialog1.Execute then begin with PrintDialog1 do begin dCopies := Copies; // 印刷枚数 dPrintRange := PrintRange; // 印刷範囲 dFromPage := FromPage; // 開始ページ dToPage := ToPage; // 終了ページ end; Printer.GetPrinter(PrinterName, PrinterDriver, PrinterPort, Hnd); Hnd := GlobalAlloc(GHND, DocumentProperties(0, 0, PrinterName, Dev, Dev, 0)); if Hnd <> 0 then begin DevMode := GlobalLock(Hnd); try DocumentProperties(hInstance, 0, PrinterName, DevMode^, Dev, DM_COPY); dPaperSize := DevMode^.dmPaperSize; // 用紙のサイズ dPaperLength := DevMode^.dmPaperLength; // 用紙の長さ dPaperWidth := DevMode^.dmPaperWidth; // 用紙の幅 dOrientation := DevMode^.dmOrientation; // 用紙の向き finally GlobalUnlock(Hnd); end; GlobalFree(Hnd); end; // (処理) end; end;
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.