打印机的大小设置
来源:互联网 发布:软件编程基础知识 编辑:程序博客网 时间:2024/06/10 04:53
procedure SetPrinterPaper(APaperNo: Integer; APaperWidth,
APaperHeight: Double);
//设置当前打印机的纸张大小
//纸张号 9 A4 13 B5
//页宽和页高,单位mm
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 (APaperNo > 0) and (APaperNo <> DMPAPER_USER) then
begin
{设置合法的纸张大小}
pDMode^.dmFields := pDMode^.dmFields or dm_PaperSize;
pDMode^.dmPaperSize := APaperNo; //DMPAPER_A4 // 合法的纸张大小标示
end
else
begin
{设置用户自定义纸张}
pDMode^.dmFields := pDMode^.dmFields or DM_PAPERSIZE or DM_PAPERWIDTH or DM_PAPERLENGTH;
pDMode^.dmPaperSize := DMPAPER_USER; // 设置为用户自定义纸张标示
pDMode^.dmPaperWidth := Round(APaperWidth * 10); // 纸张宽度
pDMode^.dmPaperLength := Round(APaperHeight * 10); // 纸张长度
end;
{设定纸张来源}
pDMode^.dmFields := pDMode^.dmFields or DMBIN_MANUAL;
pDMode^.dmDefaultSource := DMBIN_MANUAL;
GlobalUnlock(hDMode);
end;
end;
end;
procedure SetImagePaper(Img: TImage;APageWidth,APageHeight:Double);
const
C_InchToMM = 25.38888; //1英寸=25.3888毫米
var
wnd, hDMode: THandle;
dc: HDC;
FPixelX: Integer;
FPixelY: Integer;
FXmm: Single;
FYmm: Single;
B5Height: Integer;
B5Width: Integer;
begin
wnd := GetDesktopWindow;
dc := GetDC(wnd);
FPixelX := GetDeviceCaps(dc, LOGPIXELSX);
FPixelY := GetDeviceCaps(dc, LOGPIXELSY);
FXmm := FPixelX / C_InchToMM;
FYmm := FPixelY / C_InchToMM;
ReleaseDC(wnd, dc);
Img.Picture.Assign(nil);
Img.Height := Trunc(FYmm * APageHeight);
Img.Width := Trunc(FXmm * APageWidth);
end;
- 打印机的大小设置
- 餐饮店的厨房打印机如何设置字体浓度大小(教程)
- 打印机的端口设置
- 关于打印机的设置
- 设置打印机的状态
- 设置EXCEL的默认打印机
- 关于打印机设置的讨论
- 打印机共享的设置方法
- [转]本地打印机的设置
- 设置EXCEL的默认打印机
- Qt的打印机使用设置
- PB想从程序里面控制自己想要的纸张的大小而不用去打印机里去设置纸张
- 迷你打印机或中小型打印机设置纸张大小,与不规格纸张修改
- 设置打印机
- 设置打印机
- 打印机设置
- c#打印机设置,取得打印机列表及相应打印机的所有纸张格式
- VC/MFC得到电脑的默认打印机、设置默认打印机、遍历电脑打印机
- python中的list如何进行相减操作或者将list分片
- XML2010-5-13
- Ubuntu下编译OpenMesh
- SQL Server 2008阻止保存要求重新创建表的更改
- 生活中的规则
- 打印机的大小设置
- SQLServer 和Oracle常用函数对比
- 自己最近测试程序
- verilog uart interface IP
- 从 IClassFactory 为 CLSID 为 {00024500-0000-0000-C000-000000000046} 的 COM 组件创建实例失败,原因是出现以下错误: 8001010a解决办法
- 高房价与责任链模式
- Javascript的原型对象和prototype属性
- Ubuntu安装显卡驱动及设置3d桌面
- DoDataExchange 的来龙去脉