两位大侠,我看过以前的回答,但调试通过却没起作用,另:我用delphi3;
printer的pagewidth,pageheight是只读属性.看看铃铛的代码,有两个
逻辑符号我搞不清(0 和nil):
来自:铃铛时间:1998-10-05 10:02:52ID:30555
打印有多种方式,不知道你用那种,在Qreport,有一项关于打印纸的设置,可用它设置
另:若你自己控制打印,可向如下方式控制打印纸大小:
Device :array [0..(cchDeviceName-1) ] of Char;
Driver :array [0..(MAX_PATH-1)] of char ;
Port : array[0..32] of char ;
hDMode :THandle;
pDMode
DevMode;
Printer.PrinterIndex:=Printer.PrinterIndex;
Printer.GetPrinter(Device,Driver,Port,hDMode);
if hDMode 0 then
begin
pDMode:=GlobalLock(hDMode);
if pDMode nil then
begin
pDMode^.dmPaperSize:=256;
{
注:设置为'自定义纸大小'方式,在有本书中例子为
pDMode^.dmPaperSize:=0;
我用的环境为 win97,oki打印机
改为 :=256 后才正确,你具体看一下.
}
pDMode^.dmPaperLength:=1000;//纸长
pDMode^.dmPaperWidth:=1000;//纸宽
pDMode^.dmFields:=pDMode^.dmFields or DM_PAPERSIZE;
pDMode^.dmFields:=pDMode^.dmFields or DM_PAPERLENGTH;
pDMode^.dmFields:=pDMode^.dmFields or DM_PAPERWIDTH;
GlobalUnlock(hDMode);
Printer.PrinterIndex:=Printer.PrinterIndex;
end;
end;
begin
doc
enddoc
把以上程序放到打印前.