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中如何控制打印方向,纸张大小等 | 学步园
如何在程序里控制打印纸张大小(A3,A4)和打印方向?不想打开设置窗口 --------------------------------------------------------------- ...
- js 中控制打印方向横向还是纵向。
打印方向控制 @page { size: landscape; }//横向 @page { size: portrait; }//纵向 但是写在Css 中无法切换还是要写在js中. //切换打印方向 ...
- 弄了一整天,终于把打印自定义纸张大小搞定了(上)--IT man
Csdn-Blog <script language="javascript" src="http://www.023rcsc.com/count/count2.a ...
- 水晶报表中如何创建自定义的纸张大小格式?
问题 水晶报表中使用一个自定义的纸张类型格式(使用预先定义的纸张格式显示或者打印一个报表)? 解决方法 要创建一个自定义的纸张格式,来完成你工作中所使用的特殊纸张.在你开始工作之前,你必须确认你的打印 ...
- 弄了一整天,终于把打印自定义纸张大小搞定了
长江支流说的办法保留太多了,结果不行,很多类都是他在程序集里自定义的,源码又没公开 不过还是要感谢他的提示 今天和小陈搞了一天,他在国外的论坛上看到了一篇文章得到了启示,最后我们在凌晨3点终于把自定义 ...
- odoo10 report自定义paperformat,就是自定义打印的纸张大小格式等
在report.xml中添加 <record id="paperformat_euro_qingjia" model="report.paperformat&quo ...
- C#程序中如何控制播放音量的大小
1.调用系统Api [DllImport("winmm.dll")] //引用winmm.dll public static extern long ...
- Autocad经验 CAD2018怎么设置打印的纸张尺寸和方向?
我们在进行图纸设计的时候,不仅要专业知识够硬,还要学会运用很多的小技巧,比如怎么修改图纸特性.选择打印纸张,调整打印边距离,还有,居中打印 勾选.修改图形方向.使CAD打印界面的设置纸张.图形方向一致 ...
- 计算机中怎么设置纸张大小,针式打印机设置,教您针式打印机怎么设置纸张大小...
针式打印机是针对有复写功能的联单可以进行打印,针式打印机的功能还是很实用的,但是针式打印机的使用方法和设置方法是不一样的.用针式打印机打印票据时,有时候会找不到大小合适的格式,那针式打印机怎么设置纸张 ...
最新文章
- FPGA/IC Technology Exchange
- Codeforces Round #653 (Div. 3)
- (转)如何使用caffe的MATLAB接口
- 前端改变窗口大小内容不变形_10个前端灵魂拷问丨吃透这些就能摆脱初级前端工程师...
- 关于FD.io VPP的最新消息
- d).关于steal lock
- mysql清除旧版本_MYSQL使用INNODB时及时清理旧版本数据
- 4. Linux 高性能服务器编程 --- TCP/IP 通信
- php 入库验证,mayfish 数据入库验证代码
- 如何破解终端算力困局?PRCV这篇论文让机器人“算有余力”
- 嵌入式系统 - 任务管理
- Android学习笔记(二)
- aliases节点解析
- python正向索引 反向索引_理解正向索引
- Xcode Instruments之概述
- Linux系统的Web服务器的搭建
- 2-3 CAD基础 删除(erase)
- OpenCv初学者学习笔记(一):图像视频的加载与显示
- 【对接三方平台如何优雅的进行数据校验-validation/valid神器】
- Vim显示和隐藏行号的方法