delphi 打印机打印尺寸

0h4hbjxa  于 2023-11-18  发布在  其他
关注(0)|答案(4)|浏览(275)

如何在不显示对话框的情况下通过代码设置打印尺寸(宽度和高度)?

mbjcgjjk

mbjcgjjk1#

有关GetPrinterSetPrinter,请参阅MSDN文档。您可以在 Delphi herehere中找到它们使用的基本示例。第二个示例包含用于设置纸张大小的特定代码,我在下面提供了这些代码。

  1. procedure SetPrinterSettings(FPrinter: TPrinter);
  2. var
  3. FDevice: PChar;
  4. FDriver: PChar;
  5. FPort: PChar;
  6. DeviceMode: THandle;
  7. DevMode: PDeviceMode;
  8. begin
  9. {to get a current printer settings}
  10. FPrinter.GetPrinter(FDevice, FDriver, FPort, DeviceMode);
  11. {lock a printer device}
  12. DevMode := GlobalLock(DeviceMode);
  13. {set a paper size as A4-Transverse}
  14. if ((DevMode^.dmFields and DM_PAPERSIZE) = DM_PAPERSIZE) then
  15. begin
  16. DevMode^.dmFields := DevMode^.dmFields or DM_PAPERSIZE;
  17. DevMode^.dmPaperSize := DMPAPER_A4_TRANSVERSE;
  18. end;
  19. {set a paper source as Tractor bin}
  20. if ((DevMode^.dmFields and DM_DEFAULTSOURCE) = DM_DEFAULTSOURCE) then
  21. begin
  22. DevMode^.dmFields := DevMode^.dmFields or DM_DEFAULTSOURCE;
  23. DevMode^.dmDefaultSource := DMBIN_TRACTOR;
  24. end;
  25. {set a Landscape orientation}
  26. if ((DevMode^.dmFields and DM_ORIENTATION) = DM_ORIENTATION) then
  27. begin
  28. DevMode^.dmFields := DevMode^.dmFields or DM_ORIENTATION;
  29. DevMode^.dmOrientation := DMORIENT_LANDSCAPE;
  30. end;
  31. {set a printer settings}
  32. FPrinter.SetPrinter(FDevice, FDriver, FPort, DeviceMode);
  33. {unlock a device}
  34. GlobalUnlock(DeviceMode);
  35. end;

字符串

展开查看全部
5n0oy7gb

5n0oy7gb2#

从您的评论到其他答案,似乎您想选择纸张类型(A4、法律的等)-对吗?
This page声明要选择纸张类型,您需要使用Printer.GetPrinter函数获取打印机的设备句柄,然后使用GlobalLock获取可以访问的指针,转换为PDeviceMode。然后指针指向的TDeviceModePaperSize成员可以是A4,法律的等。
这一切都是刚刚出现在通过谷歌。Scroll to 'Printer Properties' on this page为我得到这个信息。这个页面提到changing the tray太。

nwsw7zdq

nwsw7zdq3#

这里有一个小块,有助于获得正确的字体大小:

  1. Printer.Canvas.Font.PixelsPerInch:=GetDeviceCaps(Printer.Canvas.Handle,LOGPIXELSY);

字符串

n7taea2i

n7taea2i4#

如果你只是想改变边距,这很容易,但取决于你如何打印。
如果你是手动打印(使用Printer.BeginDoc等),那么你只需在打印机的画布上远离边缘绘制!如果你是使用TRichEdit打印,你可以改变PageRect属性。

相关问题