前几天我发了一个关于POS58打印的帖子,多谢大家帮忙 现在已经解决打印的问题了
我是用writeln一行一行的写进去了,
但现在又有一个问题了
我的小票格式和超市的格式极其相似,格式如下单号:xxxxxxxxxx
----------
姓名:aaaa
----------
名称 数量 单价 金额
xxx xx xxx xxxxx---注:这是个循环,有可能有多个商品
----------如上格式所示,那如果有了多个商品,有了循环我该怎么做?我是用writeln写进去的啊,怎么判断,怎么循环啊?
我是用writeln一行一行的写进去了,
但现在又有一个问题了
我的小票格式和超市的格式极其相似,格式如下单号:xxxxxxxxxx
----------
姓名:aaaa
----------
名称 数量 单价 金额
xxx xx xxx xxxxx---注:这是个循环,有可能有多个商品
----------如上格式所示,那如果有了多个商品,有了循环我该怎么做?我是用writeln写进去的啊,怎么判断,怎么循环啊?
var
S: string;
ADOQuery: TDataSet;
begin
with ADOQuery do
begin
///用ADOQuery取出商品数据
while not Eof do
begin
S :=
FieldByName('名称').AsString + ' ' +
FieldByName('数量').AsString + ' ' +
FieldByName('单价').AsString + ' ' +
FieldByName('金额').AsString;//用字符串连起来再打印
WriteLn(S);
Next;
end;
end;
end;
建议循环一次输入一次。
with printers do
begin
begindoc;
while not Eof do
begin
cavas.textout(x,y,FieldByName('名称').AsString);
cavas.textout(x1,y1,FieldByName('数量').AsString);
cavas.textout(x2,y2,FieldByName('单价').AsString);
cavas.textout(x3,y3,FieldByName('全额').AsString);
Next;
end;
enddoc;
end;
X,Y为输入的横坐标和纵坐标,x1和y1是可以通过计算得到。例如:平移距离为10,纵向距离为10。
那么x1=x+10;y1=y+10;
这样打印准确。