我的想法是在 fastReport 里自己动手做一个定位打印. 我估计没有什么现成的控件,
因为各种单据的格式不一样. 但如果有的话, 别忘了告诉我一声.
至于打印机, 如果可以连续进纸打印的, 那一般的针式打印机就可以了,
如果主要是单页进纸的, 那建议使用票据打印机(好贵哦).
帮你顶了
因为各种单据的格式不一样. 但如果有的话, 别忘了告诉我一声.
至于打印机, 如果可以连续进纸打印的, 那一般的针式打印机就可以了,
如果主要是单页进纸的, 那建议使用票据打印机(好贵哦).
帮你顶了
还有就是你的打印机可能要注意选型,因为有的打印机的走纸不标准。
如果你想实现自动进纸,连续打印的话,打印机的选型是很重要的。
我就遇到过这个情况,同样的程序,有的打印机就能很规范的打印
而有的就不能。
procedure TForm1.N12Click(Sender: TObject);
var
q:integer;
begin
if (Edit1.Text='') or (Edit2.Text='')
then showmessage('纸张没有设置')
else begin
Rep:=TQuickrep.create(nil);
SetLength(TmQrlabel,i);
try
Rep.Page.Length:=strtoint(Edit1.text);
Rep.page.width:=strtoint(Edit2.Text);
Rep.page.bottommargin:=0;
Rep.page.Leftmargin:=0;
Rep.page.Rightmargin:=0;
Rep.page.Topmargin:=0;
Rep.bands.HasTitle:=true;
rep.bands.TitleBand.Height:=strtoint(Edit1.Text);
rep.bands.TitleBand.Width:=Strtoint(Edit2.Text);
for q:=low(TMQrlabel) to high(TMQrlabel) do
begin
TmQRLabel[q]:=TQRLabel.create(rep);
TmQrLabel[q].parent:=Rep.bands.titleBand;
TmQrlabel[q].AutoStretch:=true;
TmQrLabel[q].wordwrap:=true;
TmQrLabel[q].Caption:= ADBText[q].Text;
TmQrlabel[q].Font.Assign(ADBText[q].font);
TmQrlabel[q].left:=formcmTopix(strtoint(AEdit[q].text));
TmQrLabel[q].Top:=FormcmTopiy(strtoint(BEdit[q].text));
end;
rep.print; Finally
Rep.free;
end;
end;
end;
Function TForm1.FormCmtoPix(Len:integer):integer; //换算
var
DC:HDC;
dpiSize:integer;
begin
DC:=GetDC(self.Handle);
dpiSize:=GetDeviceCaps(dc,LOGPIXELSX);
Result:=Round(len*(dpisize/25.4));
end;
Function TForm1.FormCmtoPiy(Len:integer):integer;
var
DC:HDC;
dpiSize:integer;
begin
DC:=GetDC(self.Handle);
dpiSize:=GetDeviceCaps(dc,LOGPIXELSY);
Result:=Round(len*(dpisize/25.4));
end;
用EXCEL打印格式又快又省心,
把你需要的格式用程序写成EXCEL文件或是把几个打印模版在EXCEL里做好打包到资源文件里用的时候调用。 在EXCEL里做套打时我一般用这么几个步骤
先将套打的票据用扫描仪出一个300点的文件。
再将文件做成EXCEL文件的背景
然后就是画格。
再就是填充数据了。这样做出来的多试几次就可以出出比较理想的票据了。祝你顺利!
其实用报表也可以实现的.和什么打印机没太大关系.我用的是自带的报表.可以实现的 就是麻烦了点.需要长时间的调试.如果是连续套打 建议你使用好点的打印机.否则连续打印会出现走纸偏差的