📄 qtmain.pas
字号:
begin
if edit7.Focused then edit7.Text:=edit7.Text+'0' else
labelededit4.Text:=labelededit4.Text+'0';
end;
procedure TqtForm.SpeedButton1Click(Sender: TObject);
var i:integer;
begin
if lsq.RecordCount<=0 then exit;
if (lsqzsbz.AsBoolean) or (lsqzfbz.AsBoolean) or (lsqfkbz.AsBoolean)then exit;
if lsqsl.Asfloat>1 then
begin
tclsq.Close;
tclsq.Open;
for i:=0 to tclsq.FieldCount -1 do
if uppercase(tclsq.Fields[i].FieldName)<>'ID' then
begin
tclsq.Edit;
tclsq.Fields[i].Value:=lsq.FieldByname(tclsq.Fields[i].FieldName).Value;
end;
lsq.Edit;
lsqzke.AsCurrency:=round((lsqzke.AsFloat*(lsqsl.Asfloat -1)/lsqsl.Asfloat /100)*100)/100;
lsqfwfe.AsCurrency:=round((lsqfwfe.AsFloat*(lsqsl.Asfloat -1)/lsqsl.Asfloat /100)*100)/100;
lsqse.AsCurrency:=round((lsqse.AsFloat*(lsqsl.Asfloat -1)/lsqsl.Asfloat /100)*100)/100;
lsqje.AsFloat:=round(lsqje.AsFloat/lsqsl.Asfloat * (lsqsl.Asfloat -1));
lsqsl.Asfloat:=lsqsl.Asfloat -1;
lsq.Post;
lsq.Append;
for i:=0 to tclsq.FieldCount -1 do
if uppercase(tclsq.Fields[i].FieldName)<>'ID' then
lsq.Fields[i].Value:=tclsq.FieldByname(tclsq.Fields[i].FieldName).Value;
lsqzke.AsCurrency:=round((lsqzke.AsFloat/lsqsl.Asfloat /100)*100)/100;
lsqfwfe.AsCurrency:=round((lsqfwfe.AsFloat/lsqsl.Asfloat /100)*100)/100;
lsqse.AsCurrency:=round((lsqse.AsFloat/lsqsl.Asfloat /100)*100)/100;
lsqsl.Asfloat:=1;
lsqje.Value:=0;
lsq.Post;
tclsq.Close;
exit;
end;
lsq.Edit;
edit1.Text:=floattostr(strtofloat(edit1.Text) - lsqje.asfloat);
edit2.Text:=floattostr(strtofloat(edit2.Text) - lsqse.asfloat);
lsqje.AsFloat:=0;
lsqzsbz.AsBoolean:=true;
lsq.Post;
end;
procedure TqtForm.SpeedButton2Click(Sender: TObject);
begin
checkform:=Tcheckform.Create(Self);
checkform.Caption:='员工签到处理';
checkform.showmodal;
checkform.Free;
end;
procedure TqtForm.SpeedButton3Click(Sender: TObject);
begin
checkform:=Tcheckform.Create(Self);
checkform.Caption:='员工签退处理';
checkform.showmodal;
checkform.Free;
end;
procedure TqtForm.SpeedButton4Click(Sender: TObject);
begin
PostMessage(GetDesktopWindow,WM_SYSCOMMAND,SC_SCREENSAVE,0);
end;
procedure TqtForm.checkmax(Sender: TObject);
begin
query5.SQL.Clear;
if pass.yhlx='U' then query5.SQL.Add('select max(djh) as maxdjh FROM new_djh new_djh ')
else query5.SQL.Add('select max(djh) as maxdjh FROM dcdlx Dcdlx ');
query6.Open;
if query6bclx.AsString='D' then
begin
maxdjh:=strtoint(copy(formatdatetime('yyyy',date),3,2)+formatdatetime('mm',date)+formatdatetime('dd',date)+'0000');
end
else if query6bclx.AsString='M' then
begin
maxdjh:=strtoint(copy(formatdatetime('yyyy',date),3,2)+formatdatetime('mm',date)+'000000');
end
else
begin
maxdjh:=strtoint(copy(formatdatetime('yyyy',date),3,2)+'0000000');
end;
query5.Open;
if maxdjh<query5.FieldByName('maxdjh').AsInteger then maxdjh:= query5.FieldByName('maxdjh').AsInteger;
query6.Close;
while true do
begin
maxdjh:=maxdjh+1;
query5.Close;
query5.SQL.Clear;
query5.SQL.Add('select djh FROM new_djh new_djh where djh=:cs0');
query5.Parameters[0].Value:=maxdjh;
query5.Open;
if query5.RecordCount<1 then begin
query5.Append;
query5.FieldByName('djh').AsInteger:=maxdjh;
query5.Post;
break;
end;
end;
query5.Close;
end;
procedure TqtForm.SpinButton1DownClick(Sender: TObject);
begin
if treeview1.Selected.Index<(treeview1.Items.Count -1)
then treeview1.Items[treeview1.Selected.Index +1].Selected:=true;
TreeView1Click(Sender);
end;
procedure TqtForm.SpinButton1UpClick(Sender: TObject);
begin
if treeview1.Selected.Index>0
then treeview1.Items[treeview1.Selected.Index -1].Selected:=true;
TreeView1Click(sender);
end;
procedure TqtForm.SpeedButton5Click(Sender: TObject);
begin
if not lsq.Eof then lsq.Next;
end;
procedure TqtForm.SpeedButton6Click(Sender: TObject);
begin
if not lsq.Bof then lsq.Prior;
end;
procedure TqtForm.SpeedButton7Click(Sender: TObject);
begin
cpyhform.ShowModal;
end;
procedure TqtForm.SpeedButton8Click(Sender: TObject);
var hh:Tprinter;
i,j,k:integer;
begin
if lsq.RecordCount<=0 then exit;
//端口打印
{ if getport.Active then getport.Close;
getport.Parameters.ParamByName('cs1').Value:=lsqdjh.Value;
getport.Open;
while not getport.Eof do
begin
writ('COM'+getport.FieldValues['cdhm'],'');
getport.Next;
end;
getport.Close;}
// 打印机打印
if selprt.Active then selprt.Close;
selprt.Parameters.ParamByName('cs1').Value:=lsqdjh.Value;
selprt.Open;
while not selprt.Eof do
begin
cfdy.Close;
cfdy.Parameters.ParamByName('cs').Value:=lsqdjh.AsString;
cfdy.Parameters.ParamByName('cs2').Value:=selprtdyjmc.AsString;
cfdy.Open;
hh:=Tprinter.Create;
k:=-1;
j:=hh.Printers.Count -1;
for i:=0 to j do
if pos(selprtdyjmc.AsString, hh.Printers.Strings[i])>0 then
begin
quickrep2.PrinterSettings.PrinterIndex:=i;
quickrep2.Print; // .Preview;
k:=i;
end;
if k=-1 then messagedlg('没有指定 '+selprtdyjmc.AsString +' 厨房打印机!',mtwarning,[mbok],0);
cfdy.Close;
selprt.Next;
end;
end;
procedure TqtForm.Edit1Change(Sender: TObject);
begin
// disp('com1', edit1.text);
end;
function TqtForm.disp(port:string;disp_info:string):integer;
var
comport_display:string;
hcom:Thandle;
lpdcb:Tdcb;
sendnumber:dword;
display:string[40];
begin
//客显驱动
comport_display:=port;
hcom:=createfile(pchar(comport_display), generic_write,0,Nil,open_always,
file_attribute_normal,0); //打开输出端口
getcommstate(hcom,lpdcb); //获取串行口当前缺省的设置
lpdcb.baudrate:=9600;
if lpdcb.ByteSize=7 then lpdcb.ByteSize:=8;
setcommstate(hcom,lpdcb); //设置串口参数
display:=#27#81#65+'Total: ' +disp_info+#13;
writefile(hcom,display,24,sendnumber,nil); //显示合计
closehandle(hcom);
result:=0;
end;
function Tqtform.updatedcddy(port,djh:string):integer;
begin
updcddy.Close;
updcddy.SQL.Clear;
if port='CC' then updcddy.SQL.Add('insert dcddy select djh, yhh, twbh, rq, mc, gg,dj,sl,je,fkbz,zfbz,zsbz,cfdyjhm,ccjdyjhm, '+''''+port+''''+' as type,memo from dcd, prtset where dcd.djh='+djh+' and ((dcd.prn is null and dcd.zfbz=0) or (dcd.prn='+''''+'Y'+''''+' and dcd.zfbz=1)) and dcd.ccjdyjhm=prtset.bh and prtset.port not like '+''''+'%'+rjsmain.computer_name+'%'+'''')
else if port='CF' then updcddy.SQL.Add('insert dcddy select djh, yhh, twbh, rq, mc, gg,dj,sl,je,fkbz,zfbz,zsbz,cfdyjhm,ccjdyjhm, '+''''+port+''''+' as type,memo from dcd, prtset where dcd.djh='+djh+' and ((dcd.prn is null and dcd.zfbz=0) or (dcd.prn='+''''+'Y'+''''+' and dcd.zfbz=1)) and dcd.cfdyjhm=prtset.bh and prtset.port not like '+''''+'%'+rjsmain.computer_name+'%'+'''')
else if port='SY' then updcddy.SQL.Add('insert dcddy select djh, yhh, twbh, rq, mc, gg,dj,sl,je,fkbz,zfbz,zsbz,cfdyjhm,ccjdyjhm, '+''''+port+''''+' as type,memo from dcd, prtset where dcd.djh='+djh+' and ((dcd.prn is null and dcd.zfbz=0) or (dcd.prn='+''''+'Y'+''''+' and dcd.zfbz=1)) and prtset.port not like '+''''+'%'+rjsmain.computer_name+'%'+''''+' and prtset.type='+''''+'S'+'''');
updcddy.ExecSQL;
updcddy.Close;
result:=0;
end;
function Tqtform.initprt(port:string;disp_info:string):integer;
var
comport_display:string;
hcom:Thandle;
lpdcb:Tdcb;
sendnumber:dword;
display:string[48];
hxqlen,ii:integer;
begin
//票打驱动
if pos(rjsmain.computer_name,port)>0 then
begin
ii:=pos(rjsmain.computer_name,port);
comport_display:=copy(port,1,ii-1)+'.'+copy(port,ii+length(rjsmain.computer_name),length(port));
end
else comport_display:=port;
hxqlen:=0;
while comport_display=comport_display do
begin
hcom:=createfile(pchar(comport_display), generic_write,0,Nil,OPEN_EXISTING,
file_attribute_normal,0);
if hcom<>4294967295 then break;
hxqlen:=hxqlen+1;
if hxqlen>1000 then
begin
messagedlg('打开 '+comport_display+'端口失败!'+#13+'请检查打印机及其线路!',mtwarning,[mbok],0);
exit;
end;
end;
getcommstate(hcom,lpdcb);
lpdcb.baudrate:=9600;
lpdcb.DCBlength:=48;
lpdcb.Parity:=0;
lpdcb.ByteSize:=8;
lpdcb.StopBits:=1;
lpdcb.XonLim:=2048;
lpdcb.XoffLim:=512;
lpdcb.XonChar:=#17;
lpdcb.XoffChar:=#19;
setcommstate(hcom,lpdcb);
hxqlen:=length(rjsmain.dwmc);
disp_info:=copy(' ',1,10 - round(hxqlen/2))+rjsmain.dwmc+'打印机测试';//' 罗杰斯餐饮连锁机构';
display:=#27#97#1+disp_info+#27#64;
hxqlen:=length(display);
writefile(hcom,display,hxqlen,sendnumber,nil);
selport.Close;
closehandle(hcom);
// rjsmain.first_prt:='false';
result:=0;
end;
function Tqtform.writ(port:string;disp_info:string):integer;
var
comport_display:string;
hcom:Thandle;
lpdcb:Tdcb;
sendnumber:dword;
display:string[48];
hxqlen,ii:integer;
xxjj:real;
begin
//票打驱动
if pos(rjsmain.computer_name,port)>0 then
begin
ii:=pos(rjsmain.computer_name,port);
comport_display:=copy(port,1,ii-1)+'.'+copy(port,ii+length(rjsmain.computer_name),length(port));
end
else comport_display:=port;
// comport_display:=ExtractFilePath(Application.ExeName)+'writ.txt';
hxqlen:=0;
while comport_display=comport_display do
begin
hcom:=createfile(pchar(comport_display), generic_write,0,Nil,OPEN_EXISTING,
file_attribute_normal,0);
if hcom<>4294967295 then break;
hxqlen:=hxqlen+1;
if hxqlen>1000 then
begin
messagedlg('打开 '+comport_display+'端口失败!'+#13+'请检查打印机及其线路!',mtwarning,[mbok],0);
exit;
end;
end;
getcommstate(hcom,lpdcb);
lpdcb.baudrate:=9600;
lpdcb.DCBlength:=48;
lpdcb.Parity:=0;
lpdcb.ByteSize:=8;
lpdcb.StopBits:=1;
lpdcb.XonLim:=2048;
lpdcb.XoffLim:=512;
lpdcb.XonChar:=#17;
lpdcb.XoffChar:=#19;
setcommstate(hcom,lpdcb);
if selport.Active then selport.Close;
selport.SQL.Clear;
if pprrtt='' then selport.SQL.Add('select * from dcd where (djh = :cs1) and ((dcd.prn is null and dcd.zfbz=0) or ((prn='+''''+'Y'+''''+') and (zfbz=1))) order by djh, bh')
else begin
selport.SQL.Add('select * from dcd where (djh = :cs1) and ('+pprrtt+'=:cs2) and ((dcd.prn is null and dcd.zfbz=0) or ((prn='+''''+'Y'+''''+') and (zfbz=1))) order by djh, bh');
selport.Parameters.ParamByName('cs2').Value:=prtno;
end;
selport.Parameters.ParamByName('cs1').Value:=lsqdjh.Value;
selport.Open;
if selport.RecordCount>0 then
begin
// hxqlen:=length(rjsmain.dwmc);
// disp_info:=copy(' ',1,10 - round(hxqlen/2))+rjsmain.dwmc;//' 罗杰斯餐饮连锁机构';
// display:=#27#97#1+disp_info+#27#64;
// hxqlen:=length(display);
// writefile(hcom,display,hxqlen,sendnumber,nil);
// disp_info:=datetimetostr(date+time)+' 单号:'+selportdjh.AsString+' ';
if pprrtt='' then disp_info:='单号:'+selportdjh.AsString+' '+datetimetostr(date+time)
else disp_info:='单号:'+selportdjh.AsString+' (传菜)'+datetimetostr(date+time);
display:=#27#97#1+disp_info+#27#64;
hxqlen:=length(display);
writefile(hcom,display,hxqlen,sendnumber,nil);
disp_info:=' 餐台号:'+selporttwbh.AsString;
display:=#27#97#1+disp_info+#27#64;
hxqlen:=length(display);
writefile(hcom,display,hxqlen,sendnumber,nil);
disp_info:='-----------------------------------';
display:=#27#97#1+disp_info+#27#64;
hxqlen:=length(display);
writefile(hcom,display,hxqlen,sendnumber,nil);
disp_info:='序号 商 品 名 称 数量 单价 金额';
display:=#27#97#1+disp_info+#27#64;
hxqlen:=length(display);
writefile(hcom,display,hxqlen,sendnumber,nil);
ii:=1;
xxjj:=0;
while not selport.Eof do
begin
// 以下为打印正文
if ii<10 then disp_info:=' '+copy(inttostr(ii),1,1)+' '
else disp_info:=copy(inttostr(ii),1,2)+' ';
disp_info:=disp_info +copy(selportmc.AsString,1,18)+copy(' ',1,18-length(selportmc.AsString));
disp_info:=disp_info+copy(' ',1,2-length(selportsl.AsString)) +selportsl.AsString;
disp_info:=disp_info+copy(' ',1,5-length(selportdj.AsString)) +selportdj.AsString;
disp_info:=disp_info+copy(' ',1,5-length(selportje.AsString))+selportje.AsString+'元';
if selportzfbz.AsBoolean then disp_info:=disp_info+' 退';
display:=#27#97#1+disp_info+#27#64;
hxqlen:=length(display);
writefile(hcom,display,hxqlen,sendnumber,nil);
xxjj:=xxjj+selportje.AsFloat;
ii:=ii+1;
selport.Next;
end;
// 打印页尾
disp_info:='-----------------------------------';
display:=#27#97#1+disp_info+#27#64;
hxqlen:=length(display);
writefile(hcom,display,hxqlen,sendnumber,nil);
if pprrtt='' then
begin
disp_info:=' 收银: '+copy(selportyhh.AsString,1,6)+' ';
disp_info:=disp_info+' 合计: '+ floattostr(xxjj)+'元';
display:=#27#64+#27#97#1+disp_info
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -