没有打印机测试不了,按你说的这样只要设置纸张大小就应该可以了。你看看这个: procedure printer_set; var Device:Array[0..256] of Char; Driver:Array[0..256] of Char; Port:Array[0..32] of Char; hDMode:THandle; pDMode:PDevMode;begin Printer.GetPrinter(Device,Driver,Port,hDMode); if hDMode<>0 then pDMode:=GLobalLock(hDMode); if pDMode<>nil then begin pDMode^.dmPaperSize:=256; pDMode^.dmPaperLength:=900; pDMode^.dmPaperWidth:=2900;pDMode^.dmFields:=pDMode^.dmFields or DM_PAPERSIZE; pDMode^.dmFields:=pDMode^.dmFields or DM_PAPERLENGTH; pDMode^.dmFields:=pDMode^.dmFields or DM_PAPERWIDTH; end; ResetDC(Printer.Handle,pDMode^); GLobalUnLock(hDMode);end;
Printer.BeginDoc;
Printer.Canvas.TextOut(-dx,-dy,'delphi');
Printer.EndDoc;
这样你测试着打就可以弄到0了。
procedure printer_set;
var
Device:Array[0..256] of Char;
Driver:Array[0..256] of Char;
Port:Array[0..32] of Char;
hDMode:THandle;
pDMode:PDevMode;begin
Printer.GetPrinter(Device,Driver,Port,hDMode);
if hDMode<>0 then
pDMode:=GLobalLock(hDMode);
if pDMode<>nil then
begin
pDMode^.dmPaperSize:=256;
pDMode^.dmPaperLength:=900;
pDMode^.dmPaperWidth:=2900;pDMode^.dmFields:=pDMode^.dmFields or DM_PAPERSIZE;
pDMode^.dmFields:=pDMode^.dmFields or DM_PAPERLENGTH;
pDMode^.dmFields:=pDMode^.dmFields or DM_PAPERWIDTH;
end;
ResetDC(Printer.Handle,pDMode^);
GLobalUnLock(hDMode);end;