📄 unit2.pas
字号:
//当输入占用时,
//告诉控件读入整个缓冲区。
mainform.MSComm1.InputLen := 0;
//打开端口。
mainform.MSComm1.PortOpen := True;
//将 attention 命令送到调制解调器。
mainform.MSComm1.Output := Chr($1B) + Chr($51) + Chr($41) + ' THANKS'+Chr(13);
mainform.MSComm1.Output := Chr($1B) + Chr($51) + Chr($42) + 'TOTAL '+edit2.Text+ Chr(13); //确保
//关闭串行端口。
mainform.MSComm1.PortOpen := False;
end;
end
else
begin
tmpaction:='折让';
mainform.SetFocus;
end;
end;
end;
if key='+' then //收款
begin
if (mainform.Edit1.Text='') or (strtofloat(mainform.edit1.text)=0) then
begin
messagebox(handle,'还没有交易数据!','确认',MB_OK+MB_ICONINFORMATION);
key:=chr(0);
exit;
end;
application.CreateForm(Tform3,form3);
form3.showmodal;
end;
if key=']' then //售货员
begin
application.CreateForm(Tformsaler,formsaler);
formsaler.showmodal;
end;
if key='[' then //运费
begin
if Messagebox(handle,'确实是运费吗?','提示',MB_OKCANCEL+MB_ICONINFORMATION)=IDOK then
begin
if row>=1 then
begin
//事物开始
form1.database1.StartTransaction;
try
//取得pos机编号
tmpposcode:=trim(mainform.Labelposcode.text);
with mainform.queryInsert do
begin
tmpsql:='select max(sno) as Msno from trade';// where clerk=''123''';
close;
sql.Clear;
sql.Add(tmpsql);
prepare;
try
open;
except
//messagebox(mainform.handle,'数据库连接失败','错误',MB_OK+MB_ICONERROR);
exit;
end;
end;
if mainform.queryInsert['msno']=null then
sno:=0
else
sno:=mainform.queryInsert['msno']+1;
tmpdate:=formatdatetime('yyyy-mm-dd',now);
tmptime:=formatdatetime('hh:nn:ss',now);
tmpclerk:=mainform.editclerk.text;
tmpbkclerk:=mainform.editbkclerk.text;
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,change,dept,code,name,discount,num,price,amount,sub,imark)';
tmpsql:=tmpsql+' values(''G'','''+tmpposcode+''','''+tmpclerk+''','''+tmpbkclerk+''','''+tmpsaler+''','''+tmpdate+''','''+tmptime+''',';
tmpsql:=tmpsql+''''+inttostr(sno)+''',0,0,0,0,0,0,0,0,0,0,0,'''+mainform.stringGrid1.cells[2,i]+''','''+mainform.stringGrid1.cells[0,i]+''','''+mainform.stringGrid1.cells[1,i]+''',';
tmpsql:=tmpsql+''''+mainform.stringGrid1.cells[5,i]+''',:gcount,';
tmpsql:=tmpsql+':tmpdj,:tmpje,:tmpzr,''0'')';
close;
sql.clear;
sql.add(tmpsql);
parambyname('gcount').asinteger:=-strtoint(mainform.stringGrid1.cells[4,i]);
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]);
prepare;
execsql;
end;
end;
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,change,dept,code,name,discount,num,price,amount,sub,imark)';
tmpsql:=tmpsql+' values(''T'','''+tmpposcode+''','''+tmpclerk+''','''+tmpbkclerk+''','''+tmpsaler+''','''+tmpdate+''','''+tmptime+''',';
tmpsql:=tmpsql+''''+inttostr(sno)+''',:ysje,:xjje,0,0,:pay1,:pay2,:pay3,:pay4,:pay5,:pay6,:change,''T'',''T'',';
tmpsql:=tmpsql+'''T'',0,0,';
tmpsql:=tmpsql+'0,0,0,''0'')';
close;
sql.clear;
sql.add(tmpsql);
parambyname('ysje').asfloat:= -strtofloat(edit1.text);
parambyname('xjje').asfloat:= -strtofloat(edit2.text);
parambyname('pay1').asfloat:= -strtofloat(edit2.text);
parambyname('pay2').asfloat:= 0;
parambyname('pay3').asfloat:= 0;
parambyname('pay4').asfloat:= 0;
parambyname('pay5').asfloat:= 0; //店内票据
parambyname('pay6').asfloat:= 0; //挂帐
parambyname('change').asfloat:=strtofloat(edit2.text);
prepare;
execsql;
end;
//事物提交
form1.database1.Commit;
except
form1.database1.Rollback;
messagebox(mainform.handle,'现在转入单机模式','提示',MB_OK);
mainform.Labelstate.Caption:='单机';
form1.database1.Close;
form1.database1.AliasName:='curposdata';
form1.database1.Open;
exit;
end;
//打印小票
try
printer.BeginDoc;
{ //开钱箱
printer.canvas.Font.name:='control';
printer.Canvas.Font.Size:=10;
printer.Canvas.TextOut(10,10,'A');
}
//打印标题
tmpposcode:=mainform.Labelposcode.text;
tmpdate:=formatdatetime('yyyy-mm-dd hh:mm',now);
printer.canvas.Font.name:='宋体 4.7cpi';
printer.Canvas.Font.Size:=16;
printer.Canvas.TextOut(80,10,'运费收据'); //swordzj
printer.canvas.Font.name:='宋体 8.9cpi';
printer.Canvas.Font.Size:=8;
printer.Canvas.TextOut(5,30,'收款机:'+tmpposcode+' '+'收款员:'+mainform.editclerk.Text); //打印pos机编号呵日期
printer.Canvas.TextOut(5,45,'日期:'+tmpdate+' ');
printer.Canvas.TextOut(10,60,'编码 品名 单价 数量 金额');
//打印横线
printer.Canvas.TextOut(10,70,'---------------------------');
//打印数据
for i:=0 to row-1 do
begin
printer.Canvas.TextOut(0,80+i*15,mainform.stringGrid1.cells[0,i]+' '+mainform.stringGrid1.cells[1,i]+' '+mainform.stringGrid1.cells[3,i]+' '+mainform.stringGrid1.cells[4,i]+' '+mainform.stringGrid1.cells[6,i]);
end;
//打印横线
printer.Canvas.TextOut(10,row*15+85,'---------------------------');
//打印总计
tmpreceive:='0';
tmpback:=edit1.Text;
printer.Canvas.TextOut(20,row*15+100,'运费金额:'+tmpback);
//printer.Canvas.textOut(20,row*15+110,'实收金额:'+tmpreceive+' '+'找零:'+tmpback);
//打印欢迎词
printer.Canvas.TextOut(50,row*15+130,'谢谢惠顾 欢迎再来!');
printer.Canvas.TextOut(50,row*15+140,' ');
printer.Canvas.TextOut(50,row*15+150,' ');
printer.Canvas.TextOut(50,row*15+160,' ');
printer.Canvas.TextOut(50,row*15+170,' ');
printer.Canvas.TextOut(50,row*15+180,' ');
printer.Canvas.TextOut(50,row*15+190,' ');
printer.Canvas.TextOut(50,row*15+200,' ');
printer.Canvas.TextOut(50,row*15+210,' ');
printer.Canvas.TextOut(50,row*15+220,' ');
printer.EndDoc;
except
printer.Abort;
exit;
end;
//清除数据
for i:=0 to row-1 do
for j:=0 to 7 do
begin
mainform.stringGrid1.Cells[j,i]:='';
end;
mainform.edit1.text:='';
mainform.edit2.text:='';
mainform.edit3.text:='';
mainform.Editsaler.Text:='';
mainform.Edittotalsub.Text:='';
row:=0;
end;
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 Tmainform.StringGrid1KeyPress(Sender: TObject; var Key: Char);
var
selerow,maxrow,i,j:integer;
tmphj:real;
begin
if key='p' then //上页
begin
postmessage(stringgrid1.handle,WM_KEYDOWN,VK_UP,0);
postmessage(stringgrid1.handle,WM_KEYDOWN,VK_UP,0);
postmessage(stringgrid1.handle,WM_KEYDOWN,VK_UP,0);
postmessage(stringgrid1.handle,WM_KEYDOWN,VK_UP,0);
postmessage(stringgrid1.handle,WM_KEYDOWN,VK_UP,0);
postmessage(stringgrid1.handle,WM_KEYDOWN,VK_UP,0);
postmessage(stringgrid1.handle,WM_KEYDOWN,VK_UP,0);
postmessage(stringgrid1.handle,WM_KEYDOWN,VK_UP,0);
postmessage(stringgrid1.handle,WM_KEYDOWN,VK_UP,0);
end;
if key='q' then //下页
begin
postmessage(stringgrid1.handle,WM_KEYDOWN,VK_DOWN,0);
postmessage(stringgrid1.handle,WM_KEYDOWN,VK_DOWN,0);
postmessage(stringgrid1.handle,WM_KEYDOWN,VK_DOWN,0);
postmessage(stringgrid1.handle,WM_KEYDOWN,VK_DOWN,0);
postmessage(stringgrid1.handle,WM_KEYDOWN,VK_DOWN,0);
postmessage(stringgrid1.handle,WM_KEYDOWN,VK_DOWN,0);
postmessage(stringgrid1.handle,WM_KEYDOWN,VK_DOWN,0);
postmessage(stringgrid1.handle,WM_KEYDOWN,VK_DOWN,0);
postmessage(stringgrid1.handle,WM_KEYDOWN,VK_DOWN,0);
end;
if key='/' then //即时退货
begin
selerow:=stringGrid1.Selection.Top;
if (row>0) and (selerow<=(row-1)) then
if Messagebox(handle,'您确实要取消该商品吗?','提示',MB_OKCANCEL+MB_ICONINFORMATION)=IDOK then
begin
stringGrid1.Rows[selerow].Clear;
for i:=1 to row do
begin
if i>selerow then
begin
stringGrid1.Rows[i-1].Text:=stringGrid1.Rows[i].Text;
end;
end;
stringGrid1.Rows[row].Clear;
row:=row-1;
tmphj:=0;
for i:=0 to row-1 do
begin
tmphj:=tmphj+strtofloat(stringGrid1.Cells[6,i]);
end;
if row=0 then
begin
edit1.text:='0';
edit2.text:='0';
end
else
begin
edit1.text:=formatfloat('0.00',tmphj);
if (edit3.text='') or (edit3.text='0') then
edit2.text:=formatfloat('0.00',tmphj)
else
edit2.text:=formatfloat('0.00',tmphj*strtofloat(edit3.text)/100);
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) + ' THANKS'+ Chr(13); //确保
mainform.MSComm1.Output := Chr($1B) + Chr($51) + Chr($42) + 'TOTAL '+formatfloat('#,##0.00',tmphj) + Chr(13); //确保
//关闭串行端口。
mainform.MSComm1.PortOpen := False;
end;
end;
end;
if (key='l') and (row>0) then //立即更正
begin
maxrow:=row-1;
stringGrid1.Rows[maxrow].Clear;
row:=row-1;
pcodeedit.SetFocus;
tmphj:=0;
for i:=0 to row-1 do
begin
tmphj:=tmphj+strtofloat(stringGrid1.Cells[6,i]);
end;
edit1.text:=formatfloat('0.00',tmphj);
if (edit3.text='') or (edit3.text='0') then
edit2.text:=formatfloat('0.00',tmphj)
else
edit2.text:=formatfloat('0.00',tmphj*strtofloat(edit3.text)/100);
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) + ' THANKS'+ Chr(13); //确保
mainform.MSComm1.Output := Chr($1B) + Chr($51) + Chr($42) + 'TOTAL '+formatfloat('#,##0.00',tmphj) + Chr(13); //确保
//关闭串行端口。
mainform.MSComm1.PortOpen := False;
end;
end;
if key='h' then //取消交易
begin
for i:=0 to row-1 do
for j:=0 to 7 do
begin
mainform.stringGrid1.Cells[j,i]:='';
end;
mainform.edit1.text:='';
mainform.edit2.text:='';
mainform.edit3.text:='';
mainform.Editsaler.Text:='';
mainform.Edittotalsub.Text:='';
row:=0;
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) + ' THANKS'+ Chr(13); //确保
mainform.MSComm1.Output := Chr($1B) + Chr($51) + Chr($42) + 'TOTAL '+'0.00' + Chr(13); //确保
//关闭串行端口。
mainform.MSComm1.PortOpen := False;
end;
end;
if key='+' then //收款
begin
if (mainform.Edit1.Text='') or (strtofloat(mainform.edit1.text)=0) then
begin
messagebox(handle,'还没有交易数据!','确认',MB_OK+MB_ICONINFORMATION);
key:=chr(0);
exit;
end;
application.CreateForm(Tform3,form3);
form3.showmodal;
end;
if (key='.') or(key='0') or (key='1') or(key='2') or (key='3') or (key='4') or (key='5') or (key='6') or (key='7') or (key='8') or (key='9') then
begin
pcodeedit.SetFocus;
postmessage(pcodeedit.handle,WM_KEYDOWN,ord(key),0);
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -