📄 ctdj.pas
字号:
unit ctdj;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons, Grids, Mask, Spin, Menus, DBTables, Db, ExtCtrls,
ComCtrls;
type
Tycdjform = class(TForm)
grid1: TStringGrid;
Panel1: TPanel;
Panel2: TPanel;
Panel3: TPanel;
Panel4: TPanel;
Panel5: TPanel;
Panel6: TPanel;
Query1: TQuery;
Bevel9: TBevel;
Bevel10: TBevel;
Bevel11: TBevel;
Bevel12: TBevel;
Bevel13: TBevel;
Bevel14: TBevel;
Bevel15: TBevel;
Panel19: TPanel;
ydj: TEdit;
StringGrid1: TStringGrid;
GroupBox1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
xj: TRadioButton;
bk: TRadioButton;
sz: TRadioButton;
dh: TEdit;
sj: TDateTimePicker;
yj: TEdit;
roomno: TEdit;
zh: TEdit;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
Timer1: TTimer;
StoredProc1: TStoredProc;
procedure FormCreate(Sender: TObject);
procedure grid1DrawCell(Sender: TObject; Col, Row: Integer;
Rect: TRect; State: TGridDrawState);
procedure grid1Click(Sender: TObject);
procedure grid1DblClick(Sender: TObject);
procedure StringGrid1DblClick(Sender: TObject);
procedure xjClick(Sender: TObject);
procedure yjExit(Sender: TObject);
procedure yjKeyPress(Sender: TObject; var Key: Char);
procedure BitBtn2Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure roomnoKeyPress(Sender: TObject; var Key: Char);
procedure zhExit(Sender: TObject);
procedure roomnoExit(Sender: TObject);
procedure roomnoDblClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
ycdjform: Tycdjform;
implementation
uses dataproc, newdj;
var rmtypearr:array[0..5] of string;
num:array[0..5,0..4] of integer;
tabno,status,place,remark:array[0..5,0..4] of string;
welid,zhacc,lc:string;
i,j,k:integer;
{$R *.DFM}
procedure init;
begin
with ycdjform do
begin
for j:=0 to 5 do
for k:=0 to 4 do
begin
grid1.Cells[j,k]:='';
num[j,k]:=0;
place[j,k]:='';
remark[j,k]:='';
tabno[j,k]:='';
status[j,k]:='';
end;
Query1.sql.Clear;
Query1.Active:=false;
Query1.sql.text:='select tabno,num,place,remark,row,col,state from tabledb where lc='+lc;
Query1.open;
while not Query1.Eof do
begin
num[Query1.FieldByName('col').asinteger,Query1.FieldByName('row').asinteger]:=Query1.FieldByName('num').asinteger;
place[Query1.FieldByName('col').asinteger,Query1.FieldByName('row').asinteger]:=Query1.FieldByName('place').asstring;
remark[Query1.FieldByName('col').asinteger,Query1.FieldByName('row').asinteger]:=Query1.FieldByName('remark').asstring;
status[Query1.FieldByName('col').asinteger,Query1.FieldByName('row').asinteger]:=Query1.FieldByName('state').asstring;
tabno[Query1.FieldByName('col').asinteger,Query1.FieldByName('row').asinteger]:=Query1.FieldByName('tabno').asstring;
Query1.Next;
end;
Query1.Close;
Query1.sql.Clear;
Query1.Active:=false;
end;
end;
procedure Tycdjform.FormCreate(Sender: TObject);
var
arr:array[1..50] of integer;
ls:string;
begin
shortdateformat:='yyyy-mm-dd';
lc:=copy(curper.Headship,1,1);
lc:='1';
Query1.DatabaseName:='ctdm';
stringgrid1.Cells[0,0]:=' 桌号';
stringgrid1.Cells[1,0]:='人数 ';
stringgrid1.Cells[2,0]:=' 位置';
for j:=1 to 50 do arr[j]:=0;
j:=1;
for i:=0 to ComponentCount-1 do
if (Components[i] is TPanel)and(Components[i].tag=j) then
begin
(Components[i] as Tpanel).Caption:='';
arr[j]:=i;
j:=j+1;
end;
// Components[i].
Query1.sql.text:='select tabsetup.code,Name from tabsetup,tabtype where lc='+lc+' and tabType.code=tabsetup.tabType ';
Query1.open;
while not Query1.Eof do
begin
with (Components[arr[Query1.Fields[0].asinteger]] as TPanel) do
begin
Caption:=Query1.Fields[1].asstring;
rmtypearr[Query1.Fields[0].asinteger-1]:=Query1.Fields[1].asstring;
ls:=Query1.Fields[1].asstring;
Query1.Next;
while (not Query1.Eof) and (ls=trim(Query1.Fields[1].asstring)) do
begin
(ycdjform.Components[arr[Query1.Fields[0].asinteger]] as TPanel).Visible:=false;
Width:=Width+71;
Query1.Next;
end;
end;
end;
Query1.Close;
Query1.sql.Clear;
Query1.Active:=false;
BitBtn2Click(nil);
init;
end;
procedure Tycdjform.grid1DrawCell(Sender: TObject; Col, Row: Integer;
Rect: TRect; State: TGridDrawState);
var
lsls:string;
begin
if length(trim(status[col,row]))>0 then
begin
if status[col,row]='0' then
begin
(Sender as Tstringgrid).canvas.font.color:=$0000ff00; //GReen
lsls:='可用';
end;
if status[col,row]='1' then
begin
(Sender as Tstringgrid).canvas.font.color:=$000000ff; //GRed
lsls:='已用';
end;
if status[col,row]='2' then
begin
(Sender as Tstringgrid).canvas.font.color:=$0000ffff; //Yellow
lsls:='脏';
end ;
if status[col,row]='3' then
begin
(Sender as Tstringgrid).canvas.font.color:=$00ffff00; //
lsls:='停用';
end;
if status[col,row]='4' then
begin
(Sender as Tstringgrid).canvas.font.color:=$02aa00aa; //
lsls:='挂帐';
end;
(Sender as Tstringgrid).canvas.textrect((Sender as Tstringgrid).cellrect(col,row),(Sender as Tstringgrid).cellrect(col,row).Left,(Sender as Tstringgrid).cellrect(col,row).top+5,tabno[col,row]+lsls);
end;
end;
procedure Tycdjform.grid1Click(Sender: TObject);
begin
j:=(sender as tstringgrid).Col;
k:=(sender as tstringgrid).row;
if trim(tabno[j,k])<>'' then
begin
Hint:=#13+'可容纳人数:'+inttostr(num[j,k]);
if trim(place[j,k])<>'' then
Hint:=Hint+#13+' 位置:'+place[j,k];
if trim(remark[j,k])<>'' then
Hint:=Hint+#13+' 说明:'+#13+remark[j,k];
if trim(status[j,k])='0' then Hint:=grid1.Cells[j,k]+' 目前状态:可用'+Hint;
if trim(status[j,k])='1' then Hint:=grid1.Cells[j,k]+' 目前状态:已用'+Hint;
if trim(status[j,k])='3' then Hint:=grid1.Cells[j,k]+' 目前状态:停用'+Hint;
if trim(status[j,k])='4' then Hint:=grid1.Cells[j,k]+' 目前状态:挂帐'+Hint;
end
else
(sender as tstringgrid).Hint:='';
end;
procedure Tycdjform.grid1DblClick(Sender: TObject);
begin
j:=(sender as tstringgrid).Col;
k:=(sender as tstringgrid).row;
if (trim(tabno[j,k])<>'') and ((trim(status[j,k])='1') or (trim(status[j,k])='4')) then
begin
if (Caption='') then
begin
ydj.Text:=trim(tabno[j,k]);
ycdjform.close;
exit;
end;
if messagedlg('是否取消此餐桌的登记?',mtWarning,[mbYes, mbNo], 0) = mrYes then
begin
Query1.sql.Clear;
Query1.Active:=false;
Query1.sql.text:='select accno from custom where tabno='''+tabno[j,k]+''' and lc='+lc+' and Isuse=1';
if Query1.Eof then
begin
Query1.sql.Clear;
Query1.Active:=false;
Query1.sql.text:='delete ctnowin where tabno='''+tabno[j,k]+''' and lc='+lc;
Query1.SQL.Add('update tabledb set state='''+'0'+''' where tabno='''+tabno[j,k]+''' and lc='+lc);
Query1.ExecSQL;
Query1.sql.Clear;
Query1.Active:=false;
init;
end
else
showmessage('已有消费,不能取消');
end;
end;
if (trim(tabno[j,k])<>'') and (trim(status[j,k])='0') and (ydj.Enabled) then
begin
{ if messagedlg('是否登记此餐桌?',mtWarning,[mbYes, mbNo], 0) = mrYes then
begin }
i:=1;
while (i<>0) and (trim(stringgrid1.Cells[0,i])<>'') do
begin
if stringgrid1.Cells[0,i]=tabno[j,k] then exit;
i:=i+1;
end;
stringgrid1.Cells[0,i]:=tabno[j,k];
stringgrid1.Cells[1,i]:=inttostr(num[j,k]);
stringgrid1.Cells[2,i]:=place[j,k];
stringgrid1.RowCount:=i+1;
// init;
// end;
{ if ycdjform.Caption='' then
begin
ydj.Text:=trim(tabno[j,k]);
close;
end; }
// init;
end;
end;
procedure Tycdjform.StringGrid1DblClick(Sender: TObject);
begin
for i:=stringgrid1.Row to stringgrid1.RowCount do
for j:=0 to 2 do
stringgrid1.Cells[j,i]:=stringgrid1.Cells[j,i+1];
if stringgrid1.RowCount>2 then stringgrid1.RowCount:=stringgrid1.RowCount-1;
end;
procedure Tycdjform.xjClick(Sender: TObject);
begin
yj.Enabled:=xj.Checked;
roomno.Enabled:=bk.Checked;
zh.Enabled:=sz.Checked;
end;
procedure Tycdjform.yjExit(Sender: TObject);
var ls:real;
begin
if yj.Text='' then yj.Text:='0';
try
ls:=strtofloat(yj.text);
except
showmessage('金额不对');
yj.SetFocus;
end;
end;
procedure Tycdjform.yjKeyPress(Sender: TObject; var Key: Char);
begin
if (key<'0') or (key>'9') then
if (key<>#13) and (key<>#8) and (key<>'.') then key:=#0;
end;
procedure Tycdjform.BitBtn2Click(Sender: TObject);
begin
sj.Time:=time();
yj.Text:='0';
roomno.Text:='';
zh.Text:='';
zhacc:='';
welid:='';
xj.Checked:=true;
for i:=1 to stringgrid1.RowCount do
for j:=0 to 2 do
stringgrid1.Cells[j,i]:='';
stringgrid1.RowCount:=2;
end;
procedure Tycdjform.Timer1Timer(Sender: TObject);
begin
init;
end;
procedure Tycdjform.BitBtn3Click(Sender: TObject);
begin
close;
end;
procedure Tycdjform.BitBtn1Click(Sender: TObject);
var acc,isxj,isbk,bkroom:string;
begin
if trim(dh.Text)='' then
dh.Text:=xdh('ct_db.dbo.ctnowin','ct_db.dbo.lsctnowin','djcode',6);
if sz.Checked then
acc:=zhacc
else
acc:=xbh('ct_db.dbo.ctnowin','ct_db.dbo.lsctnowin','accno',1,6);
if xj.Checked then
isxj:='1'
else
isxj:='0';
if (bk.Checked) and (trim(welid)<>'') then
begin
isbk:='1';
bkroom:=roomno.Text;
end
else
begin
isbk:='0';
bkroom:='';
end;
Query1.sql.Clear;
Query1.Active:=false;
i:=1;
while trim(stringgrid1.Cells[0,i])<>'' do
begin
Query1.sql.add('insert into ctnowin values('''+stringgrid1.Cells[0,i]+''','+lc+','''+acc+''',0,0,');
Query1.sql.add(isxj+',0,0,0,'''','+isbk+','''+bkroom+''','''+welid+''','''+formatdatetime('yyyy-mm-dd',now)+' '+timetostr(sj.time)+''',null,'''+dh.Text+''',null,null,100,'''+curper.name+''','''+curper.curbc+''',0)');
Query1.SQL.Add('update tabledb set state=''1'' where tabno='''+stringgrid1.Cells[0,i]+''' and lc='+lc);
i:=i+1;
end;
if i<>1 then
begin
if (trim(yj.Text)<>'') and (trim(yj.Text)<>'0') then
begin
Query1.sql.add('insert into Deposit values('''+stringgrid1.Cells[0,1]+''','''+acc+''','+yj.Text+',:prq)');
Query1.ParamByName('prq').asdatetime:=now;
end;
Query1.ExecSQL;
end;
Query1.sql.Clear;
Query1.Active:=false;
if (bk.Checked) and (welid<>'') then
begin
StoredProc1.Prepare;
StoredProc1.ParamByName('@iwelid').asstring:=welid;
StoredProc1.ParamByName('@iwdno').asstring:='餐厅';
StoredProc1.ExecProc;
end;
showmessage('登记成功!');
init;
BitBtn2Click(nil);
end;
procedure Tycdjform.roomnoKeyPress(Sender: TObject; var Key: Char);
begin
key:=#0;
end;
procedure Tycdjform.zhExit(Sender: TObject);
begin
if trim(zh.Text)='' then
begin
sz.Checked:=false;
exit;
end;
Query1.Active:=false;
Query1.sql.Clear;
Query1.sql.Add('select accno from ctnowin where tabno='''+zh.Text+'''');
Query1.Open;
if not Query1.Eof then
zhacc:=Query1.Fields[0].asstring
else
begin
showmessage('桌号错误!');
zh.SetFocus;
end;
Query1.Active:=false;
Query1.sql.Clear;
end;
procedure Tycdjform.roomnoExit(Sender: TObject);
begin
if trim(roomno.Text)='' then
begin
bk.Checked:=false;
exit;
end;
fm.Query2.Active:=false;
fm.Query2.sql.Clear;
fm.Query2.sql.Add('select welid from nowin where roomno='''+roomno.Text+'''');
fm.Query2.Open;
if not fm.Query2.Eof then
welid:=fm.Query2.Fields[0].asstring
else
begin
showmessage('桌号错误!');
roomno.SetFocus;
end;
fm.Query2.Active:=false;
fm.Query2.sql.Clear;
end;
procedure Tycdjform.roomnoDblClick(Sender: TObject);
begin
Application.CreateForm(Tdjform, djform);
djform.Panel1.Visible:=false;
djform.rmnogrid.Visible:=false;
djform.Button1.Enabled:=false;
djform.Timer1.Free;
djform.showmodal;
roomno.Text:=copy(trim(djform.xfrmno.Text),1,6);
if length(trim(djform.xfrmno.Text))>6 then
begin
Panel5.Visible:=true;
end
else Panel5.Visible:=false;
djform.Free;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -