📄 frm_tableu.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 + -