我用delphi做了个条码打印程序 可是出现了很多问题 望各位高手指点下 程序明天就要 可以帮我解答的同行朋友 加我QQ号 通宵加班等您 23227100打印多条时 总是不能按预想位置打印
而且最大问题是 :比如打印3张 第1张标签上是第1条记录 第2张上 第1条记录+第2条记录 两个重叠 第3张上 是第1条记录+2+3 全部重叠 以此类推 真的没办法了 跟踪程序也没看到什么错误。按钮5 是打印并排小条码的 也是这样的问题!我的程序主要代码:procedure TForm1.Button6Click(Sender: TObject);
var
s1,zc_bm,zc_mc,sy_bm,cf_dz,gz_rq:string;
begin
n:=checklistbox1.Items.Count;
if n<=0 then
begin
showmessage('请选择要打印的记录');
exit;
end;begin
i:=0;
while n>0 do
begin
openport('TSC TTP-344M');
clearbuffer();
sendcommand('size 65mm,41mm');
// 打印标签的长度,宽度,速度,浓度,感应器类别,垂直间距,偏移距离
setup('65','41','3','12','0','2','2');
//打印文字
//windowsfont(24,60,48,0,0,0,'标楷体',pchar(edit1.text));
s1:=checklistbox1.Items[i];
zc_bm:=copy(s1,2,pos('>',s1)-2);
delete(s1,1,pos('>',s1));
sy_bm:=copy(s1,2,pos('>',s1)-2);
delete(s1,1,pos('>',s1));
zc_mc:=copy(s1,2,pos('>',s1)-2);
delete(s1,1,pos('>',s1));
cf_dz:=copy(s1,2,pos('>',s1)-2);
delete(s1,1,pos('>',s1));
gz_rq:=copy(s1,2,length(s1)-2);
windowsfont(strtoint(edit1.Text),50,45,0,0,0,'标楷体',pchar('资产名称:'+zc_mc));
windowsfont(strtoint(edit1.Text),100,45,0,0,0,'标楷体',pchar('使用部门:'+sy_bm));
windowsfont(strtoint(edit1.Text),150,45,0,0,0,'标楷体',pchar('存放地址:'+cf_dz));
windowsfont(strtoint(edit1.Text),200,45,0,0,0,'标楷体',pchar('购置日期:'+gz_rq));
//打印条码x方向起点,y方向起点,字符串型别,高度,1列印玛文,旋转 ,条码长度,,内容
barcode(pchar(edit2.Text),'260','128',pchar(edit9.text),'1','0','4','2',pchar(copy(zc_bm,0,12)));
windowsfont(0,280,25,0,0,0,'标楷体',pchar(copy(zc_bm,12,length(zc_bm))));
nobackfeed();
printlabel('1','1');
closeport;
i:=i+1;
zc_bm:='';
zc_mc:='';
sy_bm:='';
cf_dz:='';
gz_rq:='';
if i>=n then
break;
end;
end;
end;
procedure TForm1.Button5Click(Sender: TObject);
var
s1,s2,s3,zc_bm,zc_bm1,zc_bm2:string;
begin
n:=checklistbox1.Items.Count;
if
odd(n)=true then
begin
checklistbox1.Items.add('<''><''><''><''>');
end;
if n<=0 then
begin
showmessage('请选择要打印的记录');
exit;
end;
openport('TSC TTP-344M');
clearbuffer();
sendcommand('size 55mm,8mm');
//sendcommand('gap 2mm,0');
// 打印标签的长度,宽度,速度,浓度,感应器类别,垂直间距,偏移距离
setup('55','8','3','12','0','2','2');
if n=1 then
begin
s1:=checklistbox1.Items[i];
zc_bm:=copy(s1,2,pos('>',s1)-2);
barcode('70','2','128',pchar(edit4.text),'1','0','2','2',pchar(copy(zc_bm,0,12)));
windowsfont(70,12,12,0,0,0,'标楷体',pchar(copy(zc_bm,12,length(zc_bm))));
nobackfeed();
printlabel(pchar(n),'1');
closeport;
end
else
begin
i:=0;
while n>0 do
begin
s2:=checklistbox1.Items[i];
zc_bm1:=copy(s2,2,pos('>',s2)-2);
s3:=checklistbox1.Items[i+1];
zc_bm2:=copy(s3,2,pos('>',s3)-2);
barcode('70','2','128',pchar(edit4.text),'1','0','2','2',pchar(copy(zc_bm1,0,12)));
barcode('380','2','128',pchar(edit4.text),'1','0','2','2',pchar(copy(zc_bm2,0,12)));
windowsfont(70,2,12,0,0,0,'标楷体',pchar(copy(zc_bm1,13,length(zc_bm1))));
windowsfont(380,2,12,0,0,0,'标楷体',pchar(copy(zc_bm2,13,length(zc_bm2))));
nobackfeed();
printlabel('1','1');
i:=i+2;
if i>=n then
break;
end;
end;
closeport;
end;end.