改与当前打印机相关的DevMode 结构中的成员。DocumentProperties 函数申明如下:

Delphi代码

LONG DocumentProperties

(

HWND    hWnd,

HANDLE   hPrinter,

LPTSTR   pDeviceName,

PDEVMODE pDevModeOutput,

PDEVMODE pDevModeInput,

DWORD   fMode

);

LONG DocumentProperties

(

HWND    hWnd,

HANDLE   hPrinter,

LPTSTR   pDeviceName,

PDEVMODE pDevModeOutput,

PDEVMODE pDevModeInput,

DWORD   fMode

);

六个参数中只有pDevModeOutput 是输出变量,其余五个参数必须由程序给出具体值。其中,hWnd 表征当前窗口的句柄值;hPrinter 表示当前打印机的句柄;pDeviceName 是对打印机设备的描述;pDevModeOutput 是指向句柄值为hPrinter 的打印机DevMode 结构的指针;pDevModeInput 是指向一个修改后的DevMode 结构的指针,该结构有待于被句柄值为hPrinter 的打印机接受;fMode 定义了该函数的具体功能,如果取值DM_IN_BUFFER 那么表示打印机接受由参数pDevModeInput 表示的由程序修改了的DevMode 值,如果取值DM_OUT_BUFFER 那么程序可以通过参数pDevModeOutput 来获取打印机的DevMode 值,如果fMode 为零,则函数返回的值表示结构DevMode 所需的字节数。承接上述例子,现在将190 *114 大小的纸张设成A4 纸。再往Form1 上放置按钮Button2,增加OnClick 事件,在Use 子句后面添加WinSpool。代码如下:

delphi 代码:

Procedure TForm1.Button2Click(Sender: TObject);

var

PrnHd : THandle;

PrnInfo : PPrinterInfo1;

pcbNeeded : DWORD;

PDevModeBytes : DWORD;

DevMode: PDeviceMode;

PrnHdc : HDC;

DocInfo : PDocInfo;

begin

OpenPrinter('Epson LQ -1600K',PrnHd,nil);

// 获得打印机句柄PrnHd

GetMem(PrnInfo,1024);

GetPrinter(PrnHd,1,PrnInfo,1024,@pcbNeeded);

PDevModeBytes:= DocumentProperties

( Handle,PrnHd,prninfo^.

pDescription,DevMode^,DevMode^,0 );

{ 获取DevMode 结构所需的字节数}

GetMem(DevMode,PDevModeBytes);

// 给结构DevMode 分配空间

DocumentProperties( Handle,PrnHd,PrnInfo^.p

Description,DevMode^,DevMode^,DM_OUT_BUFFER );

// 获取打印机的DevMode 结构

With DevMode^ do begin

dmPaperSize := DMPAPER_A4   ;

// 将纸张设置成A4 纸

dmFields := dmFields or DM_PAPERSIZE;

end;

DocumentProperties( Handle,PrnHd,PrnInfo^.p

Description,DevMode^,DevMode^,

DM_OUT_BUFFER or DM_IN_BUFFER);

// 修改DevMode 结构。

{ 下面的代码是为了测试打印机

是否按A4 纸大小来打印 }

PrnHdc := CreateDC

( nil, 'Epson LQ -1600K',nil,DevMode );

GetMem( DocInfo, 100 );

With DocInfo^ do begin

delphi 获取打印机默认纸张_Delphi 动态调整打印机纸张大小相关推荐

  1. Delphi 动态调整打印机纸张大小

    信息管理系统中经常要提供各种打印功能,例如报表打印.凭证打印以及发票打印.在这些打印过程中所需要纸张的大小往往是不一致的,例如,打印报表有可能使用A4 纸或A3 纸,打印凭证或发票可能需要将打印纸张设 ...

  2. 动态调整打印机纸张大小

    动态调整打印机纸张大小 江苏省昆山市地方税务局 信息管理系统中经常要提供各种打印功能,例如报表打印.凭证打印以及发票打印.在这些打印过程中所需要纸张的大小往往是不一致的,例如,打印报表有可能使用A4 ...

  3. 获取滑动条位置,动态调整对话框显示位置;为动态添加的button添加click事件

    1.获取滑动条位置,动态调整对话框显示位置 应用场景:页面上有三个按钮,所处位置高度不同,有的按钮需要移动滑动条才能看到,各个按钮点击后要弹出同一个对话框,为了保证对话框始终显示在当前视野的中央位置, ...

  4. android程序字体大小,Android如何动态调整应用字体大小详解

    前言 为什么要动态设置字体大小?由于项目面对的是中老年客户项目中自带的字体无法满足客户需求. Android应用字体大小默认随系统设置的字体大小而变化,但您可能不希望您的应用字体大小随系统设置变化,想 ...

  5. android程序字体大小,Android 动态调整应用字体大小

    Android应用字体大小默认随系统设置的字体大小而变化,但您可能不希望您的应用字体大小随系统设置变化,想要自己控制,例如微信.本文简单介绍一下如何实现应用字体大小动态调整而不是依赖系统设置 字体大小 ...

  6. 动态调整linux分区大小,GParted 动态调整Linux分区大小

    在虚拟化环境中虚拟机运行一段时间后数据量持续增长,磁盘分区都需要进行扩容,对于Windows系统相对简单,在磁盘瘦格式的状态下直接修改虚拟机磁盘大小,在系统中的磁盘管理里扩展分区即可,实时生效连重启都 ...

  7. C#导出Excle表格根据内容动态调整单元格大小

    引入命名空间 using NPOI.HSSF.UserModel; using NPOI.HSSF.Util; using NPOI.SS.UserModel; using NPOI.SS.Util; ...

  8. python 动态调整控件大小_python GUI库图形界面开发之PyQt5动态(可拖动控件大小)布局控件QSplitter详细使用方法与实例...

    PyQt5动态(可拖动控件大小)布局控件QSplitter简介 PyQt还提供了特殊的布局管理器QSplitter.它可以动态地拖动子控件之间的边界,算是一个动态的布局管理器,QSplitter允许用 ...

  9. python 动态调整控件大小_python PyQt5如何让窗口控件与窗口大小同步变化?

    在下面的代码中 self.tableWidget.resize(self.width()-20,self.height()-20) self.tableWidget.move(10,20) 这两行没有 ...

最新文章

  1. 三人三鬼过河(野人与传教士过河)问题c/c++代码
  2. 对一句正则表达式的理解
  3. python3.6串口编程实例_使用python3实现操作串口详解
  4. 网络规划设计师论文考察要点
  5. 大数据分析推动业务增长的方法有哪些
  6. 淘宝用html还url,html取出指定div的内容(不怕嵌套)
  7. PHP 练习项目------歆语微博项目
  8. deeplearning.ai——字符级语言模型-恐龙岛
  9. freemarker ftl java_FreeMarker学习1(Ftl)
  10. Python视频处理(3)——提取视频字幕
  11. 统信UOS系统连接Windows系统共享的打印机
  12. mysql 怎么加上撇号_php - 如何在写入Mysql数据库时处理撇号
  13. linux 安装插件报错:Loaded plugins: fastestmirror
  14. 程序员的白酒里程(一)香型
  15. 2020 年 7 月编程语言排行榜
  16. day75,爬虫02,webmagic入门程序,组件介绍:Downloader,PageProcess,pipeline,Scheduler,51jop招聘网站综合案例
  17. 国科大移动互联网技术考试
  18. 数据库概念 第六版 中英文 带目录+习题答案
  19. 基于RK3288安卓Android5.1平台移植RTL8152驱动
  20. 工程计算——不动点迭代法

热门文章

  1. XEIM 帮助文档【草稿版】
  2. 目瞪口呆!台湾豪门美女过如此奢华生活?
  3. 学C/C++不能不知道的硬知识
  4. 易混淆知识点(1):word-wrap和word-break傻傻分不清楚
  5. 原型模式 java 深浅_Java设计模式——原型模式
  6. Logistic回归模型原理
  7. Windows10/11安装Linux子系统Ubuntu 20.04LTS,轻松使用生信软件,效率秒杀虚拟机
  8. matlab中函数的公式计算,MATLAB怎样定义函数(入门) 有一函数 f(x,y)=x^2+sinxy+2y , 写一程序, 输入自变量的值,输出函数值....
  9. 1284:摘花生《信息学奥赛一本通》
  10. python字符串批量替换、修改多个字符的方法实例