?? unit8.~cpp
字號:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit8.h"
#include "Unit7.h"
#include "Unit3.h"
#include "Unit2.h"
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TFormPay *FormPay;
//---------------------------------------------------------------------------
__fastcall TFormPay::TFormPay(TComponent* Owner)
: TForm(Owner)
{
TablePay->Open();
}
//---------------------------------------------------------------------------
void __fastcall TFormPay::RefreshComboBox(void)
{
TTable * tmpTable=FormTableMan->TableTable;
AnsiString info_str;
//從FormTableMan中讀取所有的餐桌信息,寫入下拉菜單中
ComboBoxTableInuse->Items->Clear();
tmpTable->First();
for(int i=0;i<tmpTable->RecordCount;i++)
{ //只顯示使用中的餐桌桌號
if(tmpTable->FieldByName("TableStatus")->AsString == "使用")
{
info_str=tmpTable->FieldByName("TableNum")->AsString;
info_str+="-";
info_str+=tmpTable->FieldByName("TableType")->AsString;
info_str+="-";
info_str+=tmpTable->FieldByName("TableStatus")->AsString;
ComboBoxTableInuse->Items->Add(info_str);
}
tmpTable->Next();
}
}
//---------------------------------------------------------------------------
void __fastcall TFormPay::FormShow(TObject *Sender)
{
RefreshComboBox();
ListView1->Items->Clear();
EditShouldPay->Text="";
EditActuallyPay->Text="";
EditCharge->Text="";
MemoDescription->Text="";
BitBtnOK->Enabled=false;
BitBtnCancel->Enabled=false;
EditActuallyPay->Enabled=false;
TableChoose=-1;
}
//---------------------------------------------------------------------------
void __fastcall TFormPay::ComboBoxTableInuseChange(TObject *Sender)
{
int pos;
if(ComboBoxTableInuse->Text == "")
{
return;
}
else
{
pos=ComboBoxTableInuse->Text.Pos("-");
TableChoose=ComboBoxTableInuse->Text.SubString(1,pos-1).ToInt();
//根據餐桌號對TableOrdered進行過濾
FormOrder->TableOrdered->Filter=AnsiString("TableNum = ")+AnsiString(TableChoose)
+" AND Status = '未結帳'";
FormOrder->TableOrdered->Filtered = true;
//將已經有的菜單填入ListView中
ListView1->Items->Clear();
TListItem *NewItem;
int dishnum;
float Money=0.0;
FormOrder->TableOrdered->First();
for(int i=0;i<FormOrder->TableOrdered->RecordCount;i++)
{
dishnum=FormOrder->TableOrdered->FieldByName("DishNum")->AsInteger;
//根據菜譜編號dishnum在FormClassDishMan->TableDish中查找對應紀錄
FormClassDishMan->TableDish->IndexFieldNames = "DishNum";
FormClassDishMan->TableDish->SetKey();
if(FormClassDishMan->TableDish->FindKey(ARRAYOFCONST((dishnum))))
{
TTable *tmpTable=FormClassDishMan->TableDish;
NewItem=ListView1->Items->Add();
//菜名
NewItem->Caption=tmpTable->FieldByName("DishName")->AsString;
NewItem->SubItems->Add(FormOrder->TableOrdered->FieldByName("Amount")->AsString);
NewItem->SubItems->Add(tmpTable->FieldByName("DishPrice")->AsString);
NewItem->SubItems->Add(tmpTable->FieldByName("DisCount")->AsString);
//累計需要付的金額
Money+=FormOrder->TableOrdered->FieldByName("Amount")->AsFloat *
tmpTable->FieldByName("DishPrice")->AsFloat *
tmpTable->FieldByName("DisCount")->AsFloat /100 ;
}
else
{
MessageDlg("找不到該紀錄!",mtError, TMsgDlgButtons() << mbOK, 0);
}
FormOrder->TableOrdered->Next();
}
//將Money顯示出來 ,保留兩位小數
EditShouldPay->Text=FormatFloat("0.00",Money);
BitBtnOK->Enabled=true;
BitBtnCancel->Enabled=true;
EditActuallyPay->Enabled=true;
}
}
//---------------------------------------------------------------------------
void __fastcall TFormPay::BitBtnOKClick(TObject *Sender)
{
//判斷EditActuallyPay的內容
if(EditActuallyPay->Text == "")
{
MessageDlg("請填寫【實付金額】!",mtError, TMsgDlgButtons() << mbOK, 0);
EditActuallyPay->SetFocus();
return;
}
if(EditActuallyPay->Text.ToDouble() < EditShouldPay->Text.ToDouble())
{
MessageDlg("【實付金額】不能小于【應付金額】!",mtError, TMsgDlgButtons() << mbOK, 0);
EditActuallyPay->SetFocus();
return;
}
//向TablePay中寫記錄
TablePay->Append();
TablePay->FieldByName("TableNum")->AsInteger=TableChoose;
TablePay->FieldByName("ShouldPay")->AsFloat=EditShouldPay->Text.ToDouble();
TablePay->FieldByName("ActuallyPay")->AsFloat=EditActuallyPay->Text.ToDouble();
TablePay->FieldByName("Charge")->AsFloat=EditCharge->Text.ToDouble();
//時間日期
DateSeparator = '-';
ShortDateFormat = "yyyy/m/d";
TablePay->FieldByName("Date")->AsString=DateToStr(Date());
TablePay->FieldByName("Time")->AsString=TimeToStr(Time());
TablePay->FieldByName("Description")->AsString = MemoDescription->Text;
TablePay->FieldByName("UserID")->AsInteger=FormMain->UserID;
TablePay->Post();
//將菜單中的各個菜的狀態設為"已結帳"
int dishnum;
FormOrder->TableOrdered->Filter=AnsiString("TableNum = ")+AnsiString(TableChoose)
+" AND Status = '未結帳'";
FormOrder->TableOrdered->Filtered = true;
FormOrder->TableOrdered->First();
//因為TableOrdered用了過濾屬性,所以更改Status之后的記錄將不顯示
//所以TableOrdered->RecordCount會逐漸減小,故,循環中的方法比較特殊
int j=FormOrder->TableOrdered->RecordCount;
for(int i=0;i<j;i++)
{
FormOrder->TableOrdered->Edit();
FormOrder->TableOrdered->FieldByName("Status")->AsString="已結帳";
FormOrder->TableOrdered->Post();
}
//設餐桌的狀態為"空閑"
FormTableMan->TableTable->IndexFieldNames="TableNum";
FormTableMan->TableTable->SetKey();
if(FormTableMan->TableTable->FindKey(ARRAYOFCONST((TableChoose))))
{
FormTableMan->TableTable->Edit();
FormTableMan->TableTable->FieldByName("TableStatus")->AsString="空閑";
FormTableMan->TableTable->Post();
}
else
{
MessageDlg("找不到該紀錄!",mtError, TMsgDlgButtons() << mbOK, 0);
}
FormShow(this); //刷新
}
//---------------------------------------------------------------------------
void __fastcall TFormPay::BitBtnCancelClick(TObject *Sender)
{
FormShow(this); //刷新
}
//---------------------------------------------------------------------------
void __fastcall TFormPay::BitBtnExitClick(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
void __fastcall TFormPay::EditActuallyPayChange(TObject *Sender)
{
if(EditActuallyPay->Text != "")
{
EditCharge->Text=EditActuallyPay->Text.ToDouble() - EditShouldPay->Text.ToDouble();
}
}
//---------------------------------------------------------------------------
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -