bestlong 怕失憶論壇

 

 

搜索
bestlong 怕失憶論壇 論壇 Report Tips Delphi 開發 - 改變列印紙張大小
查看: 6041|回復: 1
go

Delphi 開發 - 改變列印紙張大小 [複製鏈接]

Rank: 9Rank: 9Rank: 9

1#
發表於 2006-6-28 13:32 |只看該作者 |倒序瀏覽 |打印
Delphi 開發 - 改變列印紙張大小
  1. // 在執行打印前調用以下函數:
  2. // x, y: 紙張尺寸, 單位是 0.1mm
  3. procedure SetPaperSize(X, Y: Integer);
  4. var
  5.   Device: array[0..255] of char;
  6.   Driver: array[0..255] of char;
  7.   Port: array[0..255] of char;
  8.   hDMode: THandle;
  9.   PDMode: PDEVMODE;
  10. begin
  11.   Printer.PrinterIndex := Printer.PrinterIndex;
  12.   Printer.GetPrinter(Device, Driver, Port, hDMode);
  13.   if hDMode <> 0 then
  14.   begin
  15.     pDMode := GlobalLock(hDMode);
  16.     if pDMode <> nil then
  17.     begin
  18.       if (x = 0) or (y = 0) then
  19.       begin
  20.         {設置合法的紙張大小}
  21.         pDMode^.dmFields := pDMode^.dmFields or dm_PaperSize;
  22.         pDMode^.dmPaperSize := DMPAPER_FANFOLD_US; // 合法的紙張大小標示
  23.       end
  24.       else
  25.       begin
  26.         {設置用户自定義紙張}
  27.         pDMode^.dmFields := pDMode^.dmFields or DM_PAPERSIZE or DM_PAPERWIDTH or DM_PAPERLENGTH;
  28.         pDMode^.dmPaperSize := DMPAPER_USER; // 設置為用户自定義紙張標示
  29.         pDMode^.dmPaperWidth := x; // 紙張寬度
  30.         pDMode^.dmPaperLength := y; // 紙張長度
  31.       end;
  32.       {設定紙張来源}
  33.       pDMode^.dmFields := pDMode^.dmFields or DMBIN_MANUAL;
  34.       pDMode^.dmDefaultSource := DMBIN_MANUAL;

  35.       GlobalUnlock(hDMode);
  36.     end;
  37.   end;
  38. end;
複製代碼
我是雪龍
http://blog.bestlong.idv.tw
http://www.bestlong.idv.tw

Rank: 1

2#
發表於 2007-2-13 15:21 |只看該作者
請教...若要在 Win98 的平台下操作該如何實現?

因上述的 API 並無法運作於 Win98 的環境上,該如何在 Win98 上動態指定 自訂 格式的 Form 呢?

謝謝 ~~~
‹ 上一主題|下一主題

Archiver|怕失憶論壇

GMT+8, 2024-4-27 01:19 , Processed in 0.008619 second(s), 10 queries .

Powered by Discuz! X1.5

© 2001-2010 Comsenz Inc.