如何套打(100分)

  • 主题发起人 主题发起人 yc-zhj
  • 开始时间 开始时间
Y

yc-zhj

Unregistered / Unconfirmed
GUEST, unregistred user!
我有一个已经绘制好的表格,请问我如何把我要打印的文字打印到相应的表格中去,就是如何定位
我要打印的文字,恳请各位大虾指点我一个好的解题思想和方法,不胜感激
 
使用QuickReport,在BeforePrint里面判断打印次数。
如果超过一次,一定为打印(使用了Prepare的为2次)。
然后设置相应控件Enabled:=False(指不打印的东西),就可以了。
 
你可以使用WORD呀,定义模版,往模版中添加数据就可以了。
 
给你一段套打的代码。
精确套打我通常都是用尺子测量出各个位置间的长度(毫米)
每英寸大约25.4毫米,这样,可以实现物理距离与设备坐标的转换。
先定义左上角的坐标为(0,0),然后以左上角为基准得出其他所有
开始点的坐标,然后测试套打,不准确的话,只需调整左上角基准坐标就行了。
操作和代码比较复杂,但实现的效果非常好。很精确的。
请研究一下下面的代码。
procedure TFrmrtxhfp.btnprint_2;

var
sPixelsPermm:single;
pLeft,pTop:integer;
Dev:TPrinter;
frow1:array[1..2]of integer;
frow2,frow3,frow4,frow5,frow6,frow7: integer;
frow8:array[1..6]of integer;
fcol :array[1..8]of integer;
addrow :array[1..3]of integer;
addcol :array[1..4]of integer;
begin
sPixelsPermm:=GetDeviceCaps(printer.handle,LOGPIXELSX)/254;
Dev:=Printer;
pLeft:=-0;
pTop :=-40;
dev.Canvas.Font.Name:='宋体';
dev.Canvas.Font.Size:=12;
frow1[1]:=round((pLeft+140-80)*sPixelsPermm);
frow1[2]:=round((pLeft+1890)*sPixelsPermm);
frow2:=round((pLeft+280-80)*sPixelsPermm);
frow3:=round((pLeft+340-80)*sPixelsPermm);
frow4:=round((pLeft+280-80)*sPixelsPermm);
frow5:=round((pLeft+280-80)*sPixelsPermm);
frow6:=round((pLeft+310-80)*sPixelsPermm);
// frow7:=round((pLeft+2050)*sPixelsPermm);
frow8[1]:=round((pLeft+710-50)*sPixelsPermm);
frow8[2]:=round((pLeft+860-50)*sPixelsPermm);
frow8[3]:=round((pLeft+970-50)*sPixelsPermm);
frow8[4]:=round((pLeft+1310-50)*sPixelsPermm);
frow8[5]:=round((pLeft+1470-50)*sPixelsPermm);
frow8[6]:=round((pLeft+1590-50)*sPixelsPermm);
addrow[1]:=round((pLeft+520)*sPixelsPermm);
addrow[2]:=round((pLeft+1330-80)*sPixelsPermm);
addrow[3]:=round((pLeft+940)*sPixelsPermm);
addcol[1]:=round((pTop+830-80)*sPixelsPermm);
addcol[2]:=round((pTop+550-80)*sPixelsPermm);
addcol[3]:=round((pTop+620-80)*sPixelsPermm);
// addcol[4]:=round((pTop+620-80)*sPixelsPermm);
fcol[1]:=round((pTop+80)*sPixelsPermm);
fcol[2]:=round((pTop+190)*sPixelsPermm);
fcol[3]:=round((pTop+310-40)*sPixelsPermm);
fcol[4]:=round((pTop+390-40)*sPixelsPermm);
fcol[5]:=round((pTop+450-40)*sPixelsPermm);
fcol[6]:=round((pTop+520-40)*sPixelsPermm);
// fcol[7]:=round((pTop+910)*sPixelsPermm);
fcol[8]:=round((pTop+830)*sPixelsPermm);
dev.Canvas.brush.Color :=clWhite;
dev.begin
Doc;
dev.Canvas.Font.Size:=16;
dev.Canvas.TextOut(frow1[2],fcol[1],edit1.text);
dev.Canvas.Font.Size:=12;
dev.Canvas.TextOut(frow1[1],fcol[1],combobox1.text);
dev.Canvas.TextOut(frow2,fcol[2],edit4.text);
//姓名
dev.Canvas.TextOut(frow3,fcol[3],combobox3.text);//性别
dev.Canvas.TextOut(frow4,fcol[4],datetostr(dp1.date));
dev.Canvas.TextOut(frow5,fcol[5],'入托');
dev.Canvas.TextOut(frow6,fcol[6],'血');
dev.Canvas.TextOut(frow8[1],fcol[8],inttostr(yy));
dev.Canvas.TextOut(frow8[2],fcol[8],inttostr(mm));
dev.Canvas.TextOut(frow8[3],fcol[8],inttostr(dd));
dev.Canvas.TextOut(frow8[4],fcol[8],inttostr(yy));
dev.Canvas.TextOut(frow8[5],fcol[8],inttostr(mm));
dev.Canvas.TextOut(frow8[6],fcol[8],inttostr(dd));
dev.Canvas.TextOut(addrow[1],addcol[1],'Hb');
dev.Canvas.TextOut(addrow[2],addcol[2],'√');
dev.Canvas.TextOut(addrow[2],addcol[3],'√');
dev.Canvas.TextOut(addrow[3],addcol[1],'g/L');
// dev.Canvas.Font.Size:=10;
dev.EndDoc;
end;
 
如何用word模板套打?请tanhua 不吝赐教。
 
后退
顶部