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

📄 frm_tableu.pas

📁 快餐店管理系统 很好的参考材料 谢谢您的合作
💻 PAS
字号:
unit frm_tableU;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, frm_infoU, DB, StdCtrls, Grids, DBGrids,Control_tableU,ClassesU,
  ADODB,Control_dishesU,Control_drinkU;

type
  Tfrm_table = class(Tfrm_info)
    edt_name: TEdit;
    Label1: TLabel;
    Label3: TLabel;
    edt_price: TEdit;
    Label2: TLabel;
    edt_num: TEdit;
    Label4: TLabel;
    rb_dish: TRadioButton;
    rb_drink: TRadioButton;
    DBGrid_table: TDBGrid;
    DataSource_table: TDataSource;
    btn_begin: TButton;
    btn_end: TButton;
    edt_tableNo: TEdit;
    Label5: TLabel;
    Label6: TLabel;
    lab_allfee: TLabel;
    Label7: TLabel;
    edt_otherfee: TEdit;
    Label10: TLabel;
    Label8: TLabel;
    cbx_type: TComboBox;
    procedure btn_beginClick(Sender: TObject);
    procedure btn_endClick(Sender: TObject);
    procedure btn_addClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure btn_delClick(Sender: TObject);
    procedure DBGrid_infoCellClick(Column: TColumn);
    procedure btn_editClick(Sender: TObject);
    procedure DBGrid_tableCellClick(Column: TColumn);
    procedure edt_nameExit(Sender: TObject);
    procedure edt_otherfeeKeyPress(Sender: TObject; var Key: Char);
    procedure edt_numKeyPress(Sender: TObject; var Key: Char);
    procedure edt_otherfeeExit(Sender: TObject);
    procedure cbx_typeChange(Sender: TObject);
  private
    { Private declarations }
  public
    //填充开单
    procedure FillTableData;
    //填充开单明细数据
    procedure FillDetailData;
    //计算总费用
    function GetAllFee:real;
  end;

var
  frm_table: Tfrm_table;

implementation

{$R *.dfm}
function Tfrm_table.GetAllFee:real;
var
  dataSet:TDataSet;
  allFee:real;
begin
  dataSet:=TDataSet.Create(self);
  dataSet:=self.DBGrid_info.DataSource.DataSet;
  allFee:=0;
  dataSet.First;
  while not dataSet.Eof do
    begin
      allFee:=allFee+dataSet.FieldByName('单价').Value*dataSet.FieldByName('份数').Value;
      dataSet.Next;
    end;
  if trim(self.edt_otherfee.Text)='' then
    self.edt_otherfee.Text:='0';
  allFee:=allFee+strtofloat(self.edt_otherfee.text);
  result:=allFee;
end;

procedure Tfrm_table.FillTableData;
begin
  self.DataSource_table.DataSet:=Control_tableU.GetTableByState(self.cbx_type.Text);
  self.DBGrid_table.Columns[0].Visible  :=false;
  self.DBGrid_table.DataSource.DataSet.First;
  DBGrid_tableCellClick(self.DBGrid_table.Columns.Items[0]);
end;
procedure Tfrm_table.FillDetailData;
begin
  self.DataSource_info.DataSet:=Control_tableU.GetTableDetailByTableID(self.DBGrid_info.Tag);
  self.DBGrid_info.Columns[0].Visible  :=false;
  self.DBGrid_info.Columns[1].Visible  :=false;
  self.lab_allfee.Caption:=floattostr(GetAllFee);//重新得到总费用
  self.edt_tableNo.Text:=inttostr(self.DBGrid_table.Fields[1].Value);
  DBGrid_infoCellClick(self.DBGrid_info.Columns.Items[0]);
end;
procedure Tfrm_table.btn_beginClick(Sender: TObject);
begin
  inherited;
if trim(edt_tableNo.Text)='' then
  begin
     MessageBox(Handle, '请输入桌号!', '信息', MB_ICONEXCLAMATION);
     exit;
   end;
if TableState(strtoint(edt_tableNo.Text))='未结帐' then
  begin
    MessageBox(Handle, '该桌还未结帐!', '信息', MB_ICONEXCLAMATION);
    exit;
  end;
if AddTable(strtoint(edt_tableNo.Text)) then
  begin
    MessageBox(Handle, '开单成功!', '信息', MB_ICONASTERISK);
    self.FillTableData;
  end
else
  begin
    MessageBox(Handle, '开单失败!', '信息', MB_ICONEXCLAMATION);
    exit;
  end;
end;

procedure Tfrm_table.btn_endClick(Sender: TObject);
begin
  inherited;
if trim(edt_tableNo.Text)='' then
  begin
     MessageBox(Handle, '请输入桌号!', '信息', MB_ICONEXCLAMATION);
     exit;
   end;
if TableState(strtoint(edt_tableNo.Text))='已结帐' then
  begin
    MessageBox(Handle, '该桌已结帐!', '信息', MB_ICONEXCLAMATION);
    exit;
  end;
if EndTable(strtoint(edt_tableNo.Text),strtofloat(self.edt_otherfee.Text),
   strtofloat(self.lab_allfee.Caption)) then
  begin
    MessageBox(Handle, '结帐成功!', '信息', MB_ICONASTERISK);
    FillTableData;
  end
else
  begin
    MessageBox(Handle, '结帐失败!', '信息', MB_ICONEXCLAMATION);
    exit;
  end;
end;

procedure Tfrm_table.btn_addClick(Sender: TObject);
var
  TableDetail:TTableDetail;
begin
  inherited;
if((edt_num.Text='') or (edt_Name.Text='')
        or (edt_price.Text='')
        ) then
        begin
           MessageBox(Handle, '内容填写不正确!', '信息', MB_ICONEXCLAMATION);
           exit;
        end;
if not self.DBGrid_table.Fields[3].IsNull  then
  begin
     MessageBox(Handle, '该记录已经结帐,不可以修改!', '信息', MB_ICONEXCLAMATION);
     exit;
  end;
      TableDetail:=TTableDetail.Create;
      TableDetail.tableID:=DBGrid_info.Tag;//保存桌号
      TableDetail.DishesOrDrinkName:=edt_name.Text;
      TableDetail.num:=strtoint(edt_num.Text);
      TableDetail.price:=strtofloat(edt_price.Text);
      if self.rb_dish.Checked then
        TableDetail.DishesOrDrink:='0'
      else
        TableDetail.DishesOrDrink:='1';

      if(Control_tableU.AddTableDetail(TableDetail)) then
        begin
          MessageBox(Handle, '添加成功!', '信息', MB_ICONASTERISK);
          //刷新内容
          FillDetailData;
        end
      else
        begin
          MessageBox(Handle, '添加失败!', '信息', MB_ICONEXCLAMATION);
          exit;
        end;
end;

procedure Tfrm_table.FormShow(Sender: TObject);
begin
  inherited;
  FillTableData;
end;

procedure Tfrm_table.btn_delClick(Sender: TObject);
begin
  inherited;
if not self.DBGrid_table.Fields[3].IsNull  then
  begin
     MessageBox(Handle, '该记录已经结帐,不可以修改!', '信息', MB_ICONEXCLAMATION);
     exit;
  end;
if MessageBox(Handle, '您确定要删除该记录', '信息',
     MB_ICONQUESTION or MB_OKCANCEL) = IDOK then
    begin
      Control_tableU.DelTableDetail(self.edt_name.Tag);
      self.FillDetailData;
      self.edt_name.Tag:=0;
      self.DBGrid_info.Tag:=self.DBGrid_info.Fields[1].Value;//保存开单id
      self.edt_name.Text:='';
      self.edt_num.Text:='';
      self.edt_price.Text:='';
      if self.DBGrid_info.Fields[0].IsNull then
        exit;

      self.edt_name.Tag:=self.DBGrid_info.Fields[0].Value;//保存id
      self.DBGrid_info.Tag:=self.DBGrid_info.Fields[1].Value;//保存开单id
      self.edt_name.Text:=self.DBGrid_info.Fields[2].Value;
      self.edt_num.Text:=inttostr(self.DBGrid_info.Fields[3].Value);
      self.edt_price.Text:=floattostr(self.DBGrid_info.Fields[4].Value);
      if(self.DBGrid_info.Fields[5].value='菜') then
        self.rb_dish.Checked:=true
      else
        self.rb_drink.Checked:=true;
    end;
end;

procedure Tfrm_table.DBGrid_infoCellClick(Column: TColumn);
begin
  inherited;
      self.edt_name.Tag:=0;
      self.edt_name.Text:='';
      self.edt_num.Text:='';
      self.edt_price.Text:='';
 if self.DBGrid_info.Fields[0].IsNull then
        exit;
      self.edt_name.Tag:=self.DBGrid_info.Fields[0].Value;//保存id
      self.DBGrid_info.Tag:=self.DBGrid_info.Fields[1].Value;//保存开单id
      self.edt_name.Text:=self.DBGrid_info.Fields[2].Value;
      self.edt_num.Text:=inttostr(self.DBGrid_info.Fields[3].Value);
      self.edt_price.Text:=floattostr(self.DBGrid_info.Fields[4].Value);
      if(self.DBGrid_info.Fields[5].value='菜') then
        self.rb_dish.Checked:=true
      else
        self.rb_drink.Checked:=true;
end;

procedure Tfrm_table.btn_editClick(Sender: TObject);
var
  tableDetail:TTableDetail;
begin
  inherited;
if not self.DBGrid_table.Fields[3].IsNull  then
  begin
     MessageBox(Handle, '该记录已经结帐,不可以修改!', '信息', MB_ICONEXCLAMATION);
     exit;
  end;
if edt_name.Text ='' then
    begin
       MessageBox(Handle, '没有可以修改的数据!', '信息', MB_ICONEXCLAMATION);
      exit;
    end
  else
    begin
      if((edt_name.Text='') or (edt_num.Text='') or (edt_price.Text='')) then
        begin
           MessageBox(Handle, '内容填写不正确!', '信息', MB_ICONEXCLAMATION);
           exit;
        end;
      TableDetail:=TTableDetail.Create;
      TableDetail.id:=edt_name.Tag;
      TableDetail.tableID:=DBGrid_info.Tag;//保存桌号
      TableDetail.DishesOrDrinkName:=edt_name.Text;
      TableDetail.num:=strtoint(edt_num.Text);
      TableDetail.price:=strtofloat(edt_price.Text);
      if self.rb_dish.Checked then
        TableDetail.DishesOrDrink:='0'
      else
        TableDetail.DishesOrDrink:='1';
      if(Control_tableU.EditTableDetail(TableDetail)) then
        begin
          MessageBox(Handle, '修改成功!', '信息', MB_ICONASTERISK);
          //刷新内容
          FillDetailData;
        end
      else
         begin
          MessageBox(Handle, '修改失败!', '信息', MB_ICONEXCLAMATION);
          exit;
         end;
          self.edt_name.SetFocus;
    end;
end;

procedure Tfrm_table.DBGrid_tableCellClick(Column: TColumn);
begin
  inherited;
  self.DBGrid_info.Tag:=self.DBGrid_table.Fields[0].Value;
  self.FillDetailData;
end;

procedure Tfrm_table.edt_nameExit(Sender: TObject);
var
  dishes:Tdishes;
  drink:Tdrink;
begin
  inherited;
if trim(edt_name.Text) ='' then
  exit;
if self.rb_dish.Checked then
  begin
    dishes:=Tdishes.Create;
    dishes:=Control_dishesU.GetdishesBydishesID(self.edt_name.Text);
    if dishes=nil then
      begin
        MessageBox(Handle, '名称输入错误!', '信息', MB_ICONEXCLAMATION);
        self.edt_name.SetFocus;
        exit;
      end
    else
      self.edt_price.Text:=floattostr(dishes.sell);
  end
else
  begin
    drink:=Tdrink.Create;
    drink:=Control_drinkU.GetdrinkBydrinkID(self.edt_name.Text);
    if drink=nil then
      begin
        MessageBox(Handle, '名称输入错误!', '信息', MB_ICONEXCLAMATION);
        self.edt_name.SetFocus;
        exit;
      end
    else
      self.edt_price.Text:=floattostr(drink.sell);
  end;
end;

procedure Tfrm_table.edt_otherfeeKeyPress(Sender: TObject; var Key: Char);
begin
  inherited;
  if not((key in ['0'..'9',#8,#13,#46])) then
    key:=#0;
end;

procedure Tfrm_table.edt_numKeyPress(Sender: TObject; var Key: Char);
begin
  inherited;
  if not((key in ['0'..'9',#8,#13,#46])) then
    key:=#0;
end;

procedure Tfrm_table.edt_otherfeeExit(Sender: TObject);
begin
  inherited;
  self.lab_allfee.Caption:=floattostr(GetAllFee);
end;

procedure Tfrm_table.cbx_typeChange(Sender: TObject);
begin
  inherited;
  self.DataSource_table.DataSet:=GetTableByState(self.cbx_type.Text);
  self.DBGrid_table.Columns[0].Visible  :=false;
  self.DBGrid_table.DataSource.DataSet.First;
  DBGrid_tableCellClick(self.DBGrid_table.Columns.Items[0]);
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -