📄 unit3.pas
字号:
if edit3.Text='' then
pay1:=0
else
pay1:=strtofloat(edit3.text);
if edit4.Text='' then
pay2:=0
else
pay2:=strtofloat(edit4.text);
if edit5.Text='' then
pay3:=0
else
pay3:=strtofloat(edit5.text);
if edit6.Text='' then
pay4:=0
else
pay4:=strtofloat(edit6.text);
if edit7.Text='' then
pay5:=0
else
pay5:=strtofloat(edit7.text);
if edit8.Text='' then
pay6:=0
else
pay6:=strtofloat(edit8.text);
tmptotal:=pay1+pay2+pay3+pay4+pay5+pay6;
edit1.Text:=formatfloat('0.00',tmptotal);
edit2.Text:=formatfloat('0.00',strtofloat(edit1.text)-strtofloat(edittotal.text));
editmoney.Text:='';
editmoney.SetFocus;
end;
if mainform.IsShowed then
begin
//客显显示
//使用 COM1。
mainform.MSComm1.CommPort :=1;
//9600 波特,无奇偶校验,8 位数据,一个停止位。
mainform.MSComm1.Settings := '9600,N,8,1';
//当输入占用时,
//告诉控件读入整个缓冲区。
mainform.MSComm1.InputLen := 0;
//打开端口。
mainform.MSComm1.PortOpen := True;
//将 attention 命令送到端口。
mainform.MSComm1.Output := Chr($1B) + Chr($51) + Chr($41) + 'TOTAL '+edittotal.text+ Chr(13); //显示应收金额
mainform.MSComm1.Output := Chr($1B) + Chr($51) + Chr($42) + 'PAY '+edit1.text+' '+'CHG '+edit2.text+ Chr(13); //显示找钱
//关闭串行端口。
mainform.MSComm1.PortOpen := False;
end;
end;
if key='v' then //付款5-店内票据
begin
if editmoney.text<>'' then
begin
try
strtofloat(editmoney.text);
except
Application.MessageBox('请输入整数!','提示',MB_OK+MB_ICONINFORMATION);
editmoney.Text:='';
editmoney.SetFocus;
Exit;
end;
//输入票据号码
application.CreateForm(Tformcodenum,formcodenum);
formcodenum.Caption:='请输入店内票据号';
formcodenum.showmodal;
edit7.text:=formatfloat('0.00',strtofloat(editmoney.Text));
if edit3.Text='' then
pay1:=0
else
pay1:=strtofloat(edit3.text);
if edit4.Text='' then
pay2:=0
else
pay2:=strtofloat(edit4.text);
if edit5.Text='' then
pay3:=0
else
pay3:=strtofloat(edit5.text);
if edit6.Text='' then
pay4:=0
else
pay4:=strtofloat(edit6.text);
if edit7.Text='' then
pay5:=0
else
pay5:=strtofloat(edit7.text);
if edit8.Text='' then
pay6:=0
else
pay6:=strtofloat(edit8.text);
tmptotal:=pay1+pay2+pay3+pay4+pay5+pay6;
edit1.Text:=formatfloat('0.00',tmptotal);
edit2.Text:=formatfloat('0.00',strtofloat(edit1.text)-strtofloat(edittotal.text));
editmoney.Text:='';
editmoney.SetFocus;
end;
if mainform.IsShowed then
begin
//客显显示
//使用 COM1。
mainform.MSComm1.CommPort :=1;
//9600 波特,无奇偶校验,8 位数据,一个停止位。
mainform.MSComm1.Settings := '9600,N,8,1';
//当输入占用时,
//告诉控件读入整个缓冲区。
mainform.MSComm1.InputLen := 0;
//打开端口。
mainform.MSComm1.PortOpen := True;
//将 attention 命令送到端口。
mainform.MSComm1.Output := Chr($1B) + Chr($51) + Chr($41) + 'TOTAL '+edittotal.text+ Chr(13); //显示应收金额
mainform.MSComm1.Output := Chr($1B) + Chr($51) + Chr($42) + 'PAY '+edit1.text+' '+'CHG '+edit2.text+ Chr(13); //显示找钱
//关闭串行端口。
mainform.MSComm1.PortOpen := False;
end;
end;
if key='w' then //付款6-挂帐
begin
if editmoney.text<>'' then
begin
try
strtofloat(editmoney.text);
except
Application.MessageBox('请输入整数!','提示',MB_OK+MB_ICONINFORMATION);
editmoney.Text:='';
editmoney.SetFocus;
Exit;
end;
edit8.text:=formatfloat('0.00',strtofloat(editmoney.Text));
if edit3.Text='' then
pay1:=0
else
pay1:=strtofloat(edit3.text);
if edit4.Text='' then
pay2:=0
else
pay2:=strtofloat(edit4.text);
if edit5.Text='' then
pay3:=0
else
pay3:=strtofloat(edit5.text);
if edit6.Text='' then
pay4:=0
else
pay4:=strtofloat(edit6.text);
if edit7.Text='' then
pay5:=0
else
pay5:=strtofloat(edit7.text);
if edit8.Text='' then
pay6:=0
else
pay6:=strtofloat(edit8.text);
tmptotal:=pay1+pay2+pay3+pay4+pay5+pay6;
edit1.Text:=formatfloat('0.00',tmptotal);
edit2.Text:=formatfloat('0.00',strtofloat(edit1.text)-strtofloat(edittotal.text));
editmoney.Text:='';
editmoney.SetFocus;
end;
if mainform.IsShowed then
begin
//客显显示
//使用 COM1。
mainform.MSComm1.CommPort :=1;
//9600 波特,无奇偶校验,8 位数据,一个停止位。
mainform.MSComm1.Settings := '9600,N,8,1';
//当输入占用时,
//告诉控件读入整个缓冲区。
mainform.MSComm1.InputLen := 0;
//打开端口。
mainform.MSComm1.PortOpen := True;
//将 attention 命令送到端口。
mainform.MSComm1.Output := Chr($1B) + Chr($51) + Chr($41) + 'TOTAL '+edittotal.text+ Chr(13); //显示应收金额
mainform.MSComm1.Output := Chr($1B) + Chr($51) + Chr($42) + 'PAY '+edit1.text+' '+'CHG '+edit2.text+ Chr(13); //显示找钱
//关闭串行端口。
mainform.MSComm1.PortOpen := False;
end;
end;
if (key<>'.') and(key<>'0') and (key<>'1') and (key<>'2') and (key<>'3') and (key<>'4') and (key<>'5') and (key<>'6') and (key<>'7') and (key<>'8') and (key<>'9') and (key<>chr(8)) then
key:=chr(0);
end;
procedure TForm3.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
i,j:integer;
begin
if key=VK_RETURN then
begin
if edit1.text<>'' then
if strtofloat(edit1.text)<strtofloat(edittotal.text) then
begin
messagebox(form3.handle,'对不起,您的账款还未付清!','提示',MB_OK+MB_ICONINFORMATION);
exit;
end
else
begin
//把数据写进库
WriteInBase;
//把滚动条移到最上面
mainform.stringgrid1.SetFocus;
for i:=0 to mainform.stringGrid1.Selection.Top do
begin
postmessage(mainform.stringgrid1.handle,WM_KEYDOWN,VK_UP,0);
end;
mainform.pcodeedit.SetFocus;
form3.close;
form3.Release;
end;
end;
if key=VK_ESCAPE then
begin
form3.Close;
form3.Release;
end;
end;
function TForm3.writestring(str: string): integer;
var
s,port:string;
lpth:Tfilestream;
begin
s:=str;
s:=s+#13+#10;
port:='LPT1';
lpth:=tfilestream.create(port,fmopenwrite);
try
lpth.Write(s[1],length(s));
finally
lpth.free;
end;
writestring:=0;
end;
procedure TForm3.WriteInBase;
var
i,j:integer;
tmpsql,tmpclerk,tmpbkclerk,tmpsaler,tmpposcode:string;
date,time:string;
tmpzq:real;
tmpdate,tmpreceive,tmpback:string;
begin
//取得收银机编号
tmpposcode:=trim(mainform.Labelposcode.text);
try
//事物开始
form1.database1.StartTransaction;
//读取最大的交易流水号
with mainform.QueryInsert do
begin
tmpsql:='select max(sno) as Msno from trade';
close;
sql.Clear;
sql.Add(tmpsql);
try
prepare;
open;
except
messagebox(form3.handle,'最大流水号读取失败','错误',MB_OK);
//exit;
end;
end;
if mainform.QueryInsert['msno']=null then
sno:=0
else
sno:=mainform.QueryInsert['msno']+1;
lastsno:=inttostr(sno);
date:=formatdatetime('yyyy-mm-dd',now);
time:=formatdatetime('hh:nn:ss',now);
tmpclerk:=mainform.editclerk.text;
tmpbkclerk:=mainform.editbkclerk.text;
if mainform.editsaler.text='' then
tmpsaler:=tmpclerk
else
tmpsaler:=mainform.editsaler.text;
for i:=0 to row-1 do
begin
with mainform.QueryInsert do
begin
tmpsql:='Insert Into trade(op,ecr,clerk,tmpclerk,saler,saledate,saletime,sno,orgtotal,total,totaldis,totalsub,';
tmpsql:=tmpsql+'pay1,pay2,pay3,pay4,pay5,pay6,cardnum,change,dept,code,name,discount,num,price,amount,sub,imark)';
tmpsql:=tmpsql+' values(''G'','''+tmpposcode+''','''+tmpclerk+''','''+tmpbkclerk+''','''+tmpsaler+''','''+date+''','''+time+''',';
tmpsql:=tmpsql+''''+inttostr(sno)+''',0,0,:xjzk,:xjzr,0,0,0,0,0,0,''0'',0,'''+mainform.stringGrid1.cells[2,i]+''','''+mainform.stringGrid1.cells[0,i]+''','''+trim(mainform.stringGrid1.cells[1,i])+''',';
tmpsql:=tmpsql+''''+mainform.stringGrid1.cells[5,i]+''','''+mainform.stringGrid1.cells[4,i]+''',';
tmpsql:=tmpsql+':tmpdj,:tmpje,:tmpzr,''0'')';
close;
sql.clear;
sql.add(tmpsql);
parambyname('tmpdj').asfloat:= strtofloat(mainform.stringGrid1.cells[3,i]);
parambyname('tmpje').asfloat:= strtofloat(mainform.stringGrid1.cells[6,i]);
parambyname('tmpzr').asfloat:= strtofloat(mainform.stringGrid1.cells[7,i]);
if (form3.Edit9.Text='') or (form3.Edit9.Text='0') then
parambyname('xjzk').asfloat:=0
else
parambyname('xjzk').asfloat:= strtofloat(form3.edit9.text);
if (mainform.Edittotalsub.Text='') then
parambyname('xjzr').asfloat:=0
else
parambyname('xjzr').asfloat:= strtofloat(mainform.edittotalsub.text);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -