📄 zzzp.~pas
字号:
unit zzzp;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, DBCtrls, Mask, DB, ADODB,Printers;
type
TForm1 = class(TForm)
DataSource1: TDataSource;
Label1: TLabel;
DBEdit1: TDBEdit;
Label5: TLabel;
DBEdit5: TDBEdit;
Label6: TLabel;
DBEdit6: TDBEdit;
Label11: TLabel;
DBEdit11: TDBEdit;
Label12: TLabel;
DBEdit12: TDBEdit;
Label13: TLabel;
DBEdit13: TDBEdit;
Label14: TLabel;
DBEdit14: TDBEdit;
DBRadioGroup1: TDBRadioGroup;
Label9: TLabel;
Panel1: TPanel;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Label2: TLabel;
DBEdit2: TDBEdit;
Label3: TLabel;
DBEdit3: TDBEdit;
DBRadioGroup2: TDBRadioGroup;
Label10: TLabel;
Button7: TButton;
Label8: TLabel;
DBEdit8: TDBEdit;
Label4: TLabel;
DBEdit4: TDBEdit;
ADOTable1: TADOTable;
ADOTable1DSDesigner: TWideStringField;
ADOTable1DSDesigner2: TWideStringField;
ADOTable1DSDesigner3: TWideStringField;
ADOTable1DSDesigner4: TWideStringField;
ADOTable1DSDesigner5: TWideStringField;
ADOTable1DSDesigner6: TWideStringField;
ADOTable1DSDesigner7: TFloatField;
ADOTable1DSDesigner8: TWideStringField;
ADOTable1DSDesigner9: TWideStringField;
ADOTable1DSDesigner10: TWideStringField;
ADOTable1DSDesigner11: TDateTimeField;
ADOTable1DSDesigner12: TWideStringField;
ADOTable1DSDesigner13: TWideStringField;
ADOTable1DSDesigner14: TWideStringField;
Label15: TLabel;
Label7: TLabel;
DBEdit7: TDBEdit;
Label16: TLabel;
procedure DBEdit1Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure DBEdit11Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure DBEdit7Change(Sender: TObject);
procedure DBEdit4Click(Sender: TObject);
procedure ADOTable1AfterOpen(DataSet: TDataSet);
procedure Button7Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
type je=record //存放大写金额的数字
dw:string;
end;
type dx=record //存放大写字母
yr:string;
end ;
type xxzm=record //存放小写字额
x:integer;
y:Integer;
ch:string;
end;
type zfsz=record //存放字符串及每个字符后面零的个数
ch:string;
num:integer;
end;
var
Form1: TForm1;
xxje:array[1..10] of je;
rq:array[0..31] of dx;
sz:array[1..11] of xxzm;
zs:array[1..11] of zfsz;
implementation
uses Unit2;
{$R *.dfm}
function NumToChar( n:Real): wideString; //可以到万亿,并可随便扩大
const
cNum:WideString='零壹贰叁肆伍陆柒捌玖-万仟佰拾亿仟佰拾万仟佰拾元角分';
cCha:array[0..1,0..11]of string =
(( '零仟','零佰','零拾','零零零','零零',
'零亿','零万','零元','亿万','零角','零分','零整'),
( '零','零','零','零','零','亿','万','元','亿','零','整','整'));
var i :Integer;
sNum :WideString;
begin
result:= '';
sNum:=FormatFloat('0',n*100);
for i:=1 to Length(sNum) do
result := result + cNum[ord(sNum[i])-47] + cNum[26-Length(sNum)+i];
for i:= 0 to 11 do //去掉多余的零
result := StringReplace(result, cCha[0,i], cCha[1,i], [rfReplaceAll]);
end;
procedure TForm1.DBEdit1Click(Sender: TObject);
begin
if adotable1.State<>dsEdit then
adotable1.Edit;
DBEdit1.Text:='贰零零肆';
end;
procedure TForm1.Button6Click(Sender: TObject);
begin
close;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
adotable1.post;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if ( not adotable1.eof) or (not adotable1.Bof) then
adotable1.Delete;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
if not adotable1.bof then
adotable1.Prior;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
if not adotable1.Eof then
adotable1.Next;
end;
procedure TForm1.DBEdit11Click(Sender: TObject);
begin
dbedit11.Text:=DateToStr(Date);
end;
procedure TForm1.FormCreate(Sender: TObject);
var
w,h,i:integer;
begin
w:=GetDeviceCaps(printer.Handle,LOGPIXELSX);
h:=GetDeviceCaps(printer.Handle,LOGPIXELSY);
xxje[1].dw:='分';
xxje[2].dw:='角';
xxje[3].dw:='元';
xxje[4].dw:='拾';
xxje[5].dw:='百';
xxje[6].dw:='千';
xxje[7].dw:='万';
xxje[8].dw:='拾万';
xxje[9].dw:='百万';
xxje[10].dw:='千万';
rq[0].yr:='零';
rq[1].yr:='壹';
rq[2].yr:='贰';
rq[3].yr:='叁';
rq[4].yr:='肆';
rq[5].yr:='伍';
rq[6].yr:='陆';
rq[7].yr:='柒';
rq[8].yr:='捌';
rq[9].yr:='玖';
rq[10].yr:='拾';
rq[11].yr:='壹拾壹';
rq[12].yr:='壹拾贰';
rq[13].yr:='壹拾叁';
rq[14].yr:='壹拾肆';
rq[15].yr:='壹拾伍';
rq[16].yr:='壹拾陆';
rq[17].yr:='壹拾柒';
rq[18].yr:='壹拾捌';
rq[19].yr:='壹拾玖';
rq[21].yr:='贰拾壹';
rq[21].yr:='贰拾贰';
rq[23].yr:='贰拾叁';
rq[24].yr:='贰拾肆';
rq[25].yr:='贰拾伍';
rq[26].yr:='贰拾陆';
rq[27].yr:='贰拾柒';
rq[28].yr:='贰拾捌';
rq[29].yr:='贰拾玖';
rq[30].yr:='叁拾';
rq[31].yr:='叁拾壹';
sz[1].x:=trunc(155*w/25.4)+100;
sz[1].y:=trunc(25*h/25.4);
sz[1].ch:=' ';
for i:=2 to 11 do
begin
sz[i].x:=sz[i-1].x+25;
sz[i].y:=sz[i-1].y;
sz[i].ch:=' ';
end
end;
procedure TForm1.DBEdit7Change(Sender: TObject);
begin
dbedit6.text:=NumToChar(strtofloat(dbedit7.Text));
end;
procedure TForm1.DBEdit4Click(Sender: TObject);
begin
form2.show;
end;
procedure TForm1.ADOTable1AfterOpen(DataSet: TDataSet);
begin
adotable1.Edit;
end;
procedure TForm1.Button7Click(Sender: TObject);
begin
adotable1.Insert;
end;
procedure TForm1.Button5Click(Sender: TObject);
var
w,h,m,n,i,j,l:integer;
str1:string;
begin
w:=GetDeviceCaps(printer.Handle,LOGPIXELSX);
h:=GetDeviceCaps(printer.Handle,LOGPIXELSY);
try
with printer do begin
Canvas.Font.Name:='宋体';
Canvas.Font.Size:=12;
begindoc;
Canvas.TextOut(round(w*90/25.4),round(h*12/25.4),adotable1.fieldbyname('出票年').asstring);
canvas.TextOut(round(w*115/25.4),round(h*12/25.4),adotable1.fieldbyname('出票月').asstring);
canvas.TextOut(round(w*130/25.4),round(h*12/25.4),adotable1.fieldbyname('出票日').asstring);
canvas.Font.size:=10;
canvas.TextOut(round(w*80/25.4),round(h*16/25.4),adotable1.fields[3].asstring);
canvas.Font.Size:=11;
canvas.TextOut(round(w*170/25.4),round(h*16/25.4),adotable1.fieldbyname('出票人帐号').asstring);
canvas.Font.Size:=12;
canvas.TextOut(round(w*84/25.4),round(h*24/25.4),adotable1.fieldbyname('大写金额').asstring);
str1:=inttostr(trunc(adotable1.fieldbyname('小写金额').asfloat*100));
n:=length(str1);
j:=1;
sz[12-n-1].ch:='¥';
sz[12-n-1].x:=sz[12-n-1].x-5;
if n+1<11 then
sz[n+1].ch:='0';
for i:=12-n to 11 DO
begin
sz[i].ch:=copy(str1,j,1);
j:=j+1;
end;
for i:=12-n-1 to 11 do
canvas.TextOut(sz[i].x,sz[i].y,sz[i].ch);
canvas.Font.Name:='宋体';
canvas.Font.Size:=12;
m:=trunc(w*69/25.4)+5; //72
l:=round(h*60/25.4)+50;
canvas.TextOut(m,l,copy(adotable1.fieldbyname('支付密码').asstring,1,1));
canvas.TextOut(m+35,l,copy(adotable1.fieldbyname('支付密码').asstring,2,1));
canvas.TextOut(m+65,l,copy(adotable1.fieldbyname('支付密码').asstring,3,1));
canvas.TextOut(m+92,l,copy(adotable1.fieldbyname('支付密码').asstring,4,1));
canvas.TextOut(m+120,l,copy(adotable1.fieldbyname('支付密码').asstring,5,1));
canvas.TextOut(m+145,l,copy(adotable1.fieldbyname('支付密码').asstring,6,1)); //140
canvas.TextOut(m+170,l,copy(adotable1.fieldbyname('支付密码').asstring,7,1));
canvas.TextOut(m+200,l,copy(adotable1.fieldbyname('支付密码').asstring,8,1));
canvas.TextOut(m+230,l,copy(adotable1.fieldbyname('支付密码').asstring,9,1));
canvas.TextOut(m+260,l,copy(adotable1.fieldbyname('支付密码').asstring,10,1));
canvas.TextOut(m+290,l,copy(adotable1.fieldbyname('支付密码').asstring,11,1));
canvas.TextOut(m+330,l,copy(adotable1.fieldbyname('支付密码').asstring,12,1));
canvas.TextOut(m+360,l,copy(adotable1.fieldbyname('支付密码').asstring,13,1));
canvas.TextOut(m+390,l,copy(adotable1.fieldbyname('支付密码').asstring,14,1));
canvas.TextOut(m+410,l,copy(adotable1.fieldbyname('支付密码').asstring,15,1));
canvas.TextOut(m+440,l,copy(adotable1.fieldbyname('支付密码').asstring,16,1));
end;
finally
printer.EndDoc;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -