⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ctdj.pas

📁 集成酒店桑拿食管管理的完整程序
💻 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 + -