我现在做的这个系统里面有个打印的功能,需要知道我设置的纸张的类型的长度和宽度。我现在是这样做的:
GetMem(pDevice, cchDeviceName);
GetMem(pDriver, MAX_PATH);
GetMem(pPort, MAX_PATH);
Printer.GetPrinter(pDevice, pDriver, pPort, hDMode);
if hDMode <> 0 then begin
pDMode := GlobalLock(hDMode);
if pDMode <> nil then begin
vValue := pDMode^.dmPaperLength;//2970
vValue := pDMode^.dmPaperWidth; //2100
end;
GlobalUnlock(hDMode);
end;
可是不过怎么设置什么类型的纸张,vValue的值都是2970和2100。可是这个是A4的值。
不知道错在那里,希望各位大哥指点。
GetMem(pDevice, cchDeviceName);
GetMem(pDriver, MAX_PATH);
GetMem(pPort, MAX_PATH);
Printer.GetPrinter(pDevice, pDriver, pPort, hDMode);
if hDMode <> 0 then begin
pDMode := GlobalLock(hDMode);
if pDMode <> nil then begin
vValue := pDMode^.dmPaperLength;//2970
vValue := pDMode^.dmPaperWidth; //2100
end;
GlobalUnlock(hDMode);
end;
可是不过怎么设置什么类型的纸张,vValue的值都是2970和2100。可是这个是A4的值。
不知道错在那里,希望各位大哥指点。
PointX,PointY:integer;
Begin
PointX:=GetDeviceCaps(printer.Handle,LOGPIXELSX);
PointY:=GetDeviceCaps(printer.Handle,LOGPIXELSX);
End;得到当前纸张的XY长度,单位为英寸,*25.38后为毫米。
PointY:=GetDeviceCaps(printer.Handle,LOGPIXELSY);