delphi 获取打印机默认纸张_Delphi中如何控制打印方向,纸张大小等 | 学步园
如何在程序里控制打印纸张大小(A3,A4)和打印方向?不想打开设置窗口
---------------------------------------------------------------
Uses Printer;
.........
procedure TForm1.Button1Click(Sender: TObject);
var
ADevice, ADriver, APort: array[0..255] of Char;
DeviceHandle: THandle;
DevMode: PDeviceMode;
begin
//初始化打印机
Printer.GetPrinter(ADevice, ADriver, APort, DeviceHandle);
if DeviceHandle = 0 then
begin
Printer.PrinterIndex := Printer.PrinterIndex;
Printer.GetPrinter(ADevice, ADriver, APort, DeviceHandle);
end;
if DeviceHandle = 0 then
Raise Exception.Create('不能初始化打印机!')
else
DevMode := GlobalLock(DeviceHandle);
if DeviceHandle <> 0 then
begin
with DevMode^ do
begin
dmFields := dmFields or DM_ORIENTATION;
//在下面这里设置打印方向
dmOrientation := DMORIENT_LANDSCAPE; //DMORIENT_PORTRAIT
dmPaperSize := DMPAPER_A3;
Printer.SetPrinter(ADevice, ADriver, APort, DeviceHandle);
GlobalUnLock(DeviceHandle);
end;
end;
PrinterSetupDialog1.Execute; //验证一下设置是否成功了
end;
*************
printer.pagewidth是只读属性
---------------------------------------------------------------
参考这个
var
hDMode: THandle;
PDMode: PDEVMODE;
Printer.GetPrinter(Device, Driver, Port, hDMode);
if hDMode <> 0 then
begin
pDMode := GlobalLock(hDMode);
if pDMode <> nil then
begin
pDMode^.dmFields := DM_PAPERSIZE or DM_PAPERWIDTH or DM_PAPERLENGTH;
pDMode^.dmPaperSize := DMPAPER_USER;
pDMode^.dmPaperWidth := APaperWidth;
pDMode^.dmPaperLength := APaperHeight;
pDMode^.dmFields:=pDMode^.dmFields or DM_ORIENTATION;
pDMode^.DMORIENTATION:= Direct;
end;
end;
//打印机设置的纸张大小
---------------------------------------------------------------
在执行打印前调用以下函数:
procedure SetPaperSize(X, Y: Integer);
// 单位是0.1mm
// A4时 Printer.Pagewidth:=1440; A5时 Printer.Pagewidth:=1049;
// B5时 Printer.Pagewidth:=1290; 16K时 Printer.Pagewidth:=1035;
// lq1600宽行打印机这个值宽度最大为42cm左右, 长度大约2m。
//改变devicemode结构
var
Device: array[0..255] of char;
Driver: array[0..255] of char;
Port: array[0..255] of char;
hDMode: THandle;
PDMode: PDEVMODE;
begin
Printer.PrinterIndex := Printer.PrinterIndex;
Printer.GetPrinter(Device, Driver, Port, hDMode);
if hDMode <> 0 then
begin
pDMode := GlobalLock(hDMode);
if pDMode <> nil then
begin
if (x = 0) or (y = 0) then
begin
{Set to legal}
pDMode^.dmFields := pDMode^.dmFields or dm_PaperSize;
{pDMode^.dmPaperSize := DMPAPER_LEGAL; changed by wulianmin}
pDMode^.dmPaperSize := DMPAPER_FANFOLD_US;
end
else
begin
{Set to custom size}
pDMode^.dmFields := pDMode^.dmFields or
DM_PAPERSIZE or
DM_PAPERWIDTH or
DM_PAPERLENGTH;
pDMode^.dmPaperSize := DMPAPER_USER;
pDMode^.dmPaperWidth := x {SomeValueInTenthsOfAMillimeter};
pDMode^.dmPaperLength := y {SomeValueInTenthsOfAMillimeter};
end;
{设定纸张来源}
pDMode^.dmFields := pDMode^.dmFields or DMBIN_MANUAL;
pDMode^.dmDefaultSource := DMBIN_MANUAL;
GlobalUnlock(hDMode);
end;
end;
Printer.PrinterIndex := Printer.PrinterIndex;
//以下开始打印
Printer.BeginDoc;
Printer.Canvas.TextOut(100,100, 'Test 1');
Printer.EndDoc;
end;
delphi 获取打印机默认纸张_Delphi中如何控制打印方向,纸张大小等 | 学步园相关推荐
- delphi 获取打印机默认纸张_Delphi 动态调整打印机纸张大小
修 改与当前打印机相关的DevMode 结构中的成员.DocumentProperties 函数申明如下: Delphi代码 LONG DocumentProperties ( HWND hWnd, ...
- delphi 获取打印机默认纸张_在DELPHI中实现打印的预览
在DELPHI中实现打印的预览 PCPOP.COM 2005年10月18日 类型:转载 作者:<电脑报> 编辑:王琛 ----------------------------------- ...
- Delphi中如何控制打印方向,纸张大小等
如何在程序里控制打印纸张大小(A3,A4)和打印方向?不想打开设置窗口 --------------------------------------------------------- ...
- delphi 获取打印机默认纸张_如何设置一台打印机打印不同尺寸的纸张
Delphi(Pascal) codevar PrtInfo2: PPrinterInfo2;//具体的内容 查查MSDN DeviceMode: PDeviceMode;//具体的内容 查查MSDN ...
- js 中控制打印方向横向还是纵向。
打印方向控制 @page { size: landscape; }//横向 @page { size: portrait; }//纵向 但是写在Css 中无法切换还是要写在js中. //切换打印方向 ...
- Delphi 获取打印机,打印队列中任务数量
项目中使用标签打印机打印标签,由于客户是"自由爱好者",处理两次"无法打印"的技术咨询后,写了个函数: 虽然CSDN语法中都没有了Delphi,但是WEBURL ...
- jquery 获取系统默认年份_js中获得当前时间是年份和月份
js中获得当前时间是年份和月份,形如:201208 //获取完整的日期 var date=new Date; var year=date.getFullYear(); var month=date.g ...
- abap视图字段限制_MM03物料主数据视图中某些视图或者某些字段的控制方法 | 学步园...
公司里面业务方面需要控制MM03会计视图中的 标准价不显示,由于博主本身是学ABAP的,所以对于这种问题首先想到的是做个增强, 根据用户与数据库中自定义可以访问"标准价"的用户组进 ...
- unityplayerpre存档_Unity3D 中PlayerPrefs保存或读取数组的方法 | 学步园
Unity本身有PlayerPrefs来做一些数据的保存和读取,也可以通过循环来做批量的读取或者保存,下面这个脚本可以方便的调用用来做上面批量的工作,比如读取一组文本数组数据和保存一组文本数组数据. ...
最新文章
- vim 自定义命令 自定义快捷键(转)
- 安徽关节式焊接机器人_上下料机器人的重要性体现在哪里?它有哪些优势?
- mysql tnsnames.ora_tnsnames.ora配置注意(连接新的数据库)
- 用openbabel将pdbqt文件转成pdb
- DeepStream输出插件Gst-nvmsgconv和Gst-nvmsgbroker
- 【java笔记】IO流(1):IO流概述,字节输出/输入流读写文件
- (0)图像处理界面——C#调用C++图像处理的DLL
- 易语言 修改易语自身言皮肤方法
- 使用.net做微信公众号后台
- PS2游戏Android模拟器,安卓PS2游戏大全|安卓PS2模拟器游戏_小鸡模拟器
- 智能人物画像综合分析系统——Day8
- 360校招真题——最强大脑
- Maven的几个常用Plugin
- 职场历练【管理学之三】
- Teredo tunneling pseudo-interface前面有个黄色感叹号
- 论文阅读《A Multi-State Constraint Kalman Filter for Vision-aided Inertial Navigation》1
- 这样定义通用人工智能
- C语言实现求n的阶乘(n!),阶乘的和。
- 网络爬虫python实例视频-Python网络爬虫实例教程 视频讲解版
- 团队软件库_if 我是前端团队 Leader,怎么制定前端协作规范?