win2000中的打印问题?(100分)

  • 主题发起人 主题发起人 mafp
  • 开始时间 开始时间
M

mafp

Unregistered / Unconfirmed
GUEST, unregistred user!
在delphi中用qreprot控件,页面用custom自己设定大小,在win2000打印机中创建新格式
(与delphi中一样),在属性中选用此格式,但最后在程序中打印还是用a4类型,改不过来,
如何解决?
 
在win2000中使用自定义纸张时有的打印机可能不支持,或者说win2000这方面支持不好。
你可以查查SFW上的贴子,有很多这方面的问题!
 
有两个方法可以在win2000中设置自定义纸张:
1、手工添加
在“控制面板”、“打印机和传真”中选中一台打印机,在“文件”菜单的“服务器属性”中创建新格式即可。
2、程序动态修改
procedure SetPaperSize(X, Y: Integer);
// 单位是0.1mm
//改变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;

{Set the bin to use}
pDMode^.dmFields := pDMode^.dmFields or DMBIN_MANUAL;
pDMode^.dmDefaultSource := DMBIN_MANUAL;

GlobalUnlock(hDMode);
end;

end;

end;
 
后退
顶部