关于发票,运单套打的问题???急、急、...........(200分)

  • 主题发起人 主题发起人 sonyuak
  • 开始时间 开始时间
S

sonyuak

Unregistered / Unconfirmed
GUEST, unregistred user!
本人从没有搞过这样的事情,请教各位做发票、特快专递、货单等套打经验的大哥,介绍一下这方面的经验。有例子请发到我的邮箱:songyuak@163.com 拜托了各位大哥
 
套打不是在印好的发票上打印数据,跟普通打印一样的,对准打印位置就行了,论坛里很多,自己找一下吧。
 
那里有大哥,我没找到
 
这个问题,应该自己解决,主要是你选择的工具是否对路,建议用fastreport或reportmachine应该很快解决你的问题。
 
如果能帮助你,我将会很高兴,请试试下面的方法。
或者你把邮箱告诉我,我把源程序发你。这是我以前用的时候找的一个。
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, jpeg,inifiles,printers;
type
TForm1 = class(TForm)
ScrollBox1: TScrollBox;
Panel1: TPanel;
Edit1: TEdit;
Image1: TImage;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
Edit7: TEdit;
Edit8: TEdit;
Edit9: TEdit;
Edit10: TEdit;
Edit11: TEdit;
Edit12: TEdit;
Edit13: TEdit;
Edit18: TEdit;
Edit19: TEdit;
Edit20: TEdit;
Edit21: TEdit;
Edit14: TEdit;
Edit15: TEdit;
Edit16: TEdit;
Button1: TButton;
Button2: TButton;
GroupBox1: TGroupBox;
Edit17: TEdit;
Label1: TLabel;
Label2: TLabel;
Edit22: TEdit;
Label3: TLabel;
Edit23: TEdit;
Label4: TLabel;
Edit24: TEdit;
Label5: TLabel;
Edit25: TEdit;
Label6: TLabel;
Edit26: TEdit;
Label7: TLabel;
Edit27: TEdit;
Label8: TLabel;
Edit28: TEdit;
Label9: TLabel;
Edit29: TEdit;
Label10: TLabel;
Edit30: TEdit;
Edit31: TEdit;
Edit32: TEdit;
Edit33: TEdit;
Edit34: TEdit;
Edit35: TEdit;
Edit36: TEdit;
Edit37: TEdit;
Edit38: TEdit;
Edit39: TEdit;
Edit40: TEdit;
Edit41: TEdit;
Label11: TLabel;
Edit42: TEdit;
Edit43: TEdit;
procedure Button1Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var inifile:tinifile;
begin
IniFile := TIniFile.Create (ExtractFilePath (
Application.ExeName) + '通知书详情单.ini');
with inifiledo
begin
WriteString('发件人信息','邮编1',edit1.text);
WriteString('发件人信息','邮编2',edit2.text);
WriteString('发件人信息','邮编3',edit3.text);
WriteString('发件人信息','邮编4',edit4.text);
WriteString('发件人信息','邮编5',edit5.text);
WriteString('发件人信息','邮编6',edit6.text);
WriteString('发件人信息','名址1',edit18.text);
WriteString('发件人信息','名址2',edit19.text);
WriteString('发件人信息','名址3',edit20.text);
WriteString('发件人信息','电话',edit21.Text);
WriteString('收件人信息','邮编1',edit7.text);
WriteString('收件人信息','邮编2',edit8.text);
WriteString('收件人信息','邮编3',edit9.text);
WriteString('收件人信息','邮编4',edit10.text);
WriteString('收件人信息','邮编5',edit11.text);
WriteString('收件人信息','邮编6',edit12.text);
WriteString('收件人信息','考生号',edit14.text);
WriteString('收件人信息','名址',edit15.text);
WriteString('收件人信息','收件人姓名',edit41.text);
WriteString('收件人信息','电话',edit16.text);
WriteString('打印位置','原寄局左边距',edit17.text);
WriteString('打印位置','原寄局右边距',edit31.text);
WriteString('打印位置','发件人名址1左边距',edit22.text);
WriteString('打印位置','发件人名址1右边距',edit35.text);
WriteString('打印位置','发件人名址2左边距',edit23.text);
WriteString('打印位置','发件人名址2右边距',edit36.text);
WriteString('打印位置','发件人名址3左边距',edit24.text);
WriteString('打印位置','发件人名址3右边距',edit37.text);
WriteString('打印位置','发件人电话左边距',edit25.text);
WriteString('打印位置','发件人电话右边距',edit32.text);
WriteString('打印位置','发件人邮编左边距',edit26.text);
WriteString('打印位置','发件人邮编右边距',edit33.text);
WriteString('打印位置','考生号左边距',edit27.text);
WriteString('打印位置','考生号右边距',edit38.text);
WriteString('打印位置','收件人名址左边距',edit28.text);
WriteString('打印位置','收件人名址右边距',edit39.text);
WriteString('打印位置','收件人姓名左边距',edit42.text);
WriteString('打印位置','收件人姓名右边距',edit43.text);
WriteString('打印位置','收件人电话左边距',edit29.text);
WriteString('打印位置','收件人电话右边距',edit40.text);
WriteString('打印位置','收件人邮编左边距',edit30.text);
WriteString('打印位置','收件人邮编右边距',edit34.text);
end;
end;

procedure TForm1.FormActivate(Sender: TObject);
var inifile:tinifile;
begin
IniFile := TIniFile.Create (ExtractFilePath (
Application.ExeName) + '通知书详情单.ini');
with inifiledo
begin
edit1.Text:=ReadString('发件人信息','邮编1','6');
edit2.Text:=ReadString('发件人信息','邮编2','2');
edit3.Text:=ReadString('发件人信息','邮编3','1');
edit4.Text:=ReadString('发件人信息','邮编4','0');
edit5.Text:=ReadString('发件人信息','邮编5','0');
edit6.Text:=ReadString('发件人信息','邮编6','0');
edit18.text:=ReadString('发件人信息','名址1','');
edit19.text:=ReadString('发件人信息','名址2','');
edit20.text:=ReadString('发件人信息','名址3','');
edit21.Text:=ReadString('发件人信息','电话','');
edit7.text:=ReadString('收件人信息','邮编1','');
edit8.text:=ReadString('收件人信息','邮编2','');
edit9.text:=ReadString('收件人信息','邮编3','');
edit10.text:=ReadString('收件人信息','邮编4','');
edit11.text:=ReadString('收件人信息','邮编5','');
edit12.text:=ReadString('收件人信息','邮编6','');
edit14.text:=ReadString('收件人信息','考生号','');
edit15.text:=ReadString('收件人信息','名址','');
edit16.text:=ReadString('收件人信息','电话','');
edit17.text:=readString('打印位置','原寄局左边距','0');
edit31.text:=ReadString('打印位置','原寄局右边距','0');
edit22.text:=ReadString('打印位置','发件人名址1左边距','0');
edit35.text:=ReadString('打印位置','发件人名址1右边距','0');
edit23.text:=ReadString('打印位置','发件人名址2左边距','0');
edit36.text:=ReadString('打印位置','发件人名址2右边距','0');
edit24.text:=ReadString('打印位置','发件人名址3左边距','0');
edit37.text:=ReadString('打印位置','发件人名址3右边距','0');
edit25.text:=ReadString('打印位置','发件人电话左边距','0');
edit32.text:=ReadString('打印位置','发件人电话右边距','0');
edit26.text:=ReadString('打印位置','发件人邮编左边距','0');
edit33.text:=ReadString('打印位置','发件人邮编右边距','0');
edit27.text:=ReadString('打印位置','考生号左边距','0');
edit38.text:=ReadString('打印位置','考生号右边距','0');
edit28.text:=ReadString('打印位置','收件人名址左边距','0');
edit39.text:=ReadString('打印位置','收件人名址右边距','0');
edit42.text:=ReadString('打印位置','收件人姓名左边距','0');
edit43.text:=ReadString('打印位置','收件人姓名右边距','0');
edit29.text:=ReadString('打印位置','收件人电话左边距','0');
edit40.text:=ReadString('打印位置','收件人电话右边距','0');
edit30.text:=ReadString('打印位置','收件人邮编左边距','0');
edit34.text:=ReadString('打印位置','收件人邮编右边距','0');
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var ppix:integer;
begin
PPIX:=GetDeviceCaps(Printer.Handle,LOGPIXELSX);
try
Printer.begin
Doc;
printer.canvas.font.color:=clred;
printer.Canvas.Font.Name:='宋体';
printer.Canvas.font.Size:=14;
printer.Title:='信封打印';
// 创建打印作业
//原寄局
printer.canvas.textout(trunc(strtofloat(edit17.text)/2.54*ppix),
trunc(strtofloat(edit31.text)/2.54*ppix),edit13.text);
//发件人名址1
printer.Canvas.TextOut(trunc(strtofloat(edit22.text)/2.54*ppix),
trunc(strtofloat(edit35.text)/2.54*ppix),edit18.text);
//发件人名址2
printer.Canvas.TextOut(trunc(strtofloat(edit23.text)/2.54*ppix),
trunc(strtofloat(edit36.text)/2.54*ppix),edit19.text);
//发件人名址3
printer.Canvas.TextOut(trunc(strtofloat(edit24.text)/2.54*ppix),
trunc(strtofloat(edit37.text)/2.54*ppix),edit20.text);
//发件人电话
printer.Canvas.TextOut(trunc(strtofloat(edit25.text)/2.54*ppix),
trunc(strtofloat(edit32.text)/2.54*ppix),edit21.text);
//发件人邮编,编号间隔为0.5cm
printer.Canvas.TextOut(trunc(strtofloat(edit26.text)/2.54*ppix),
trunc(strtofloat(edit33.text)/2.54*ppix),edit1.text);
printer.Canvas.TextOut(trunc((strtofloat(edit26.text)+0.5)/2.54*ppix),
trunc(strtofloat(edit33.text)/2.54*ppix),edit2.text);
printer.Canvas.TextOut(trunc((strtofloat(edit26.text)+1)/2.54*ppix),
trunc(strtofloat(edit33.text)/2.54*ppix),edit3.text);
printer.Canvas.TextOut(trunc((strtofloat(edit26.text)+1.5)/2.54*ppix),
trunc(strtofloat(edit33.text)/2.54*ppix),edit4.text);
printer.Canvas.TextOut(trunc((strtofloat(edit26.text)+2)/2.54*ppix),
trunc(strtofloat(edit33.text)/2.54*ppix),edit5.text);
printer.Canvas.TextOut(trunc((strtofloat(edit26.text)+2.5)/2.54*ppix),
trunc(strtofloat(edit33.text)/2.54*ppix),edit6.text);
//考生号
printer.Canvas.TextOut(trunc(strtofloat(edit27.text)/2.54*ppix),
trunc(strtofloat(edit38.text)/2.54*ppix),edit14.text);
//收件人地址
printer.Canvas.TextOut(trunc(strtofloat(edit28.text)/2.54*ppix),
trunc(strtofloat(edit39.text)/2.54*ppix),edit15.text);
//收件人姓名
printer.Canvas.TextOut(trunc(strtofloat(edit42.text)/2.54*ppix),
trunc(strtofloat(edit43.text)/2.54*ppix),edit41.text);
//收件人电话
printer.Canvas.TextOut(trunc(strtofloat(edit29.text)/2.54*ppix),
trunc(strtofloat(edit40.text)/2.54*ppix),edit16.text);
//收件人邮编,编号间隔为0.5cm
printer.Canvas.TextOut(trunc(strtofloat(edit30.text)/2.54*ppix),
trunc(strtofloat(edit34.text)/2.54*ppix),edit7.text);
printer.Canvas.TextOut(trunc((strtofloat(edit30.text)+0.5)/2.54*ppix),
trunc(strtofloat(edit34.text)/2.54*ppix),edit8.text);
printer.Canvas.TextOut(trunc((strtofloat(edit30.text)+1)/2.54*ppix),
trunc(strtofloat(edit34.text)/2.54*ppix),edit9.text);
printer.Canvas.TextOut(trunc((strtofloat(edit30.text)+1.5)/2.54*ppix),
trunc(strtofloat(edit34.text)/2.54*ppix),edit10.text);
printer.Canvas.TextOut(trunc((strtofloat(edit30.text)+2)/2.54*ppix),
trunc(strtofloat(edit34.text)/2.54*ppix),edit11.text);
printer.Canvas.TextOut(trunc((strtofloat(edit30.text)+2.5)/2.54*ppix),
trunc(strtofloat(edit34.text)/2.54*ppix),edit12.text);
Printer.EndDoc;
// 送往打印机
except
Printer.Abort;
// 出错情况下中止打印
raise;
end;
end;
end.
 
根据楼上的代码,自己改写一下即可,还是自己用PRINTER写好,没必要用这个控件用哪个控件。
 
最主要的是用户定义套打的界面~~~~做好了就受欢迎~~~~~~~
 
我的e-mail:songyuak@163.com
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部