我用POS指令写的很好,但是老板要求用很大的字,没办法,只好换成TPRINTER做,在80带切纸的机器上很好,但是在76的针式打印机上,每次ENDDOC后,总要走很长一段空白,我试了一下设页面高度,结果没有用.不知道有什么方法可以解决.设置纸张的带码是COPY的,如下.
  Printer.GetPrinter(Device,Driver,Port,hDMode);
// 获取打印机DevMode 结构的句柄值,
// 存放在hDMode 中
 if hDMode<>0 then begin
   pDMode := GlobalLock(hDMode);
// 获取指向打印机DevMode 结构的// 指针
if pDMode<>nil then begin
pDMode^.dmPaperSize := 256; //要设为其它可查API 中的DevMode
// 如果要将当前打印机纸张变为自定义
//dmPaperSize 必须设置成256
pDMode^.dmPaperLength := 100;
pDMode^.dmPaperWidth := 1900;
pDMode^.dmFields := pDMode^.dmFields or
DM_PAPERSIZE;
pDMode^.dmFields :=pDMode^.dmFields or DM_PAPERLENGTH;
pDMode^.dmFields :=pDMode^.dmFields or DM_PAPERWIDTH;
{ 以上三条语句是对相应
    的dmFields 成员进行置位。}
ResetDC(Printer.Handle,pDMode^);
// 设置打印机设备环境句柄的值
GlobalUnlock(hDMode);
end;
end;
{ 下面的代码是为了测试打印机是否
 按190 *114 纸张大小来打印}
with Printer do begin
BeginDoc;
Canvas.TextOut(10,10,'Hello, My Friend!');
EndDoc;
end;
我是在80的机器上试的,手头没有76的机器,结果Hello, My Friend一打就切纸了,并没有按我设的长度走.请指教?

解决方案 »

  1.   

    另外我打完后用了退纸命令,效果非常不好.因为是又层的纸,打印机退得直哼哼.
    还有我不大清楚打印机本来是怎么控制打印高度的,比如我只打一行字,打印机是怎么判断打多长后结束呢.我用ShowMessage(Inttostr(Printer.PageHeight));,结果不论什么时候,总是同一个值,我要知道某次打多长,用什么变量看.当然我知道我的输出的Y值,但打印机走多长纸从哪儿看.