套打打印多张发票是位置偏移。急用!!!! ( 积分: 100 )

  • 主题发起人 主题发起人 hyh5795
  • 开始时间 开始时间
H

hyh5795

Unregistered / Unconfirmed
GUEST, unregistred user!
我用这个函数
function PrintValue(xPos, yPos, Value: string;
fLong: Real = 0): Boolean;
var ppix: integer;
begin
PPIX := GetDeviceCaps(Printer.Handle, LOGPIXELSX);
printer.canvas.textout(trunc((strtofloat(xPos) + fLong) / 2.54 * ppix),
trunc(strtofloat(yPos) / 2.54 * ppix), Value);
end;
这样把每个数据打印到对应的位置啊,
第一张位置可以调正确,但从第二张起位置就往下移了5CM左右,
请问一下子要打印700张发票,如何让每一张都打印到第一张所对好的位置上啊,
请高手帮忙,急用.
 
我用这个函数
function PrintValue(xPos, yPos, Value: string;
fLong: Real = 0): Boolean;
var ppix: integer;
begin
PPIX := GetDeviceCaps(Printer.Handle, LOGPIXELSX);
printer.canvas.textout(trunc((strtofloat(xPos) + fLong) / 2.54 * ppix),
trunc(strtofloat(yPos) / 2.54 * ppix), Value);
end;
这样把每个数据打印到对应的位置啊,
第一张位置可以调正确,但从第二张起位置就往下移了5CM左右,
请问一下子要打印700张发票,如何让每一张都打印到第一张所对好的位置上啊,
请高手帮忙,急用.
 
要用自定义打印纸,设定高度和你的发票高度一样,走纸时就不会有太大偏移了。
 
LOGPIXELSX ?
LOGPIXELSY
 
就函数本身来分析,你用的Trunc()函数的精度预定有问题,如Trunc(1.8)的结果是 1.
你可以使用Round()函数来减少这个误差,如Round(1.8)的结果是 2。
但这个误差不可避免。
你有这个需要的话,可以结合这两函数同时使用,假如你设计的好的话,
可以将这个误差平衡掉。
祝圣诞节快乐。
 
多人接受答案了。
 
后退
顶部