?? unit7.~cpp
字號:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit7.h"
#include "Unit1.h"
#include "Unit2.h"
#include "Unit3.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TFormOrder *FormOrder;
//---------------------------------------------------------------------------
__fastcall TFormOrder::TFormOrder(TComponent* Owner)
: TForm(Owner)
{
//---
TableOrdered->Open();
RefreshTreeView();
TreeViewOrder->OnClick=FormClassDishMan->TreeView1->OnClick;
}
//---------------------------------------------------------------------------
void __fastcall TFormOrder::FormShow(TObject *Sender)
{
TableChoose=-1;
RefreshComboBox();
}
//---------------------------------------------------------------------------
void __fastcall TFormOrder::RefreshComboBox(void)
{
TTable * tmpTable=FormTableMan->TableTable;
AnsiString info_str;
//從FormTableMan中讀取所有的餐桌信息,寫入下拉菜單中
ComboBoxTable->Items->Clear();
tmpTable->First();
for(int i=0;i<tmpTable->RecordCount;i++)
{
info_str=tmpTable->FieldByName("TableNum")->AsString;
info_str+="-";
info_str+=tmpTable->FieldByName("TableType")->AsString;
info_str+="-";
info_str+=tmpTable->FieldByName("TableStatus")->AsString;
ComboBoxTable->Items->Add(info_str);
tmpTable->Next();
}
}
//---------------------------------------------------------------------------
void __fastcall TFormOrder::RefreshTreeView(void)
{
TMemoryStream * tmpTreeStream = new TMemoryStream();
FormClassDishMan->TreeView1->SaveToStream(tmpTreeStream);
tmpTreeStream->Position=0;
TreeViewOrder->LoadFromStream(tmpTreeStream);
TreeViewOrder->Items->GetFirstNode()->Expand(false);
delete tmpTreeStream;
}
//---------------------------------------------------------------------------
void __fastcall TFormOrder::ComboBoxTableChange(TObject *Sender)
{
int pos;
if(ComboBoxTable->Text == "")
{
return;
}
else
{
pos=ComboBoxTable->Text.Pos("-");
TableChoose=ComboBoxTable->Text.SubString(1,pos-1).ToInt();
//查看選擇的餐桌的狀態
FormTableMan->TableTable->IndexFieldNames="TableNum";
FormTableMan->TableTable->SetKey();
if(FormTableMan->TableTable->FindKey(ARRAYOFCONST((TableChoose))))
{
if(FormTableMan->TableTable->FieldByName("TableStatus")->AsString
== "空閑" )
{//詢問是否啟用該餐桌
if(MessageDlg("該餐桌尚未啟用,現在起用嗎?",
mtConfirmation, TMsgDlgButtons() << mbYes << mbNo, 0)
==mrYes)
{
FormTableMan->TableTable->Edit();
FormTableMan->TableTable->FieldByName("TableStatus")->AsString="使用";
FormTableMan->TableTable->Post();
RefreshComboBox(); //刷新下拉菜單
//找到TableChoose所在的選項
for(int i=0;i<ComboBoxTable->Items->Count;i++)
{
if(ComboBoxTable->Items->Strings[i].SubString(1,1).ToInt() == TableChoose)
{
ComboBoxTable->ItemIndex=i;
//這里會觸發ComboBoxTable的OnChange事件,所以不用再調用ComboBoxTableChange(this);
break;
}
}
}
else
{
ComboBoxTable->ItemIndex=-1;
TableChoose=-1;
return;
}
}
}
else
{
MessageDlg("找不到該紀錄!",mtError, TMsgDlgButtons() << mbOK, 0);
}
//根據餐桌號對TableOrdered進行過濾
TableOrdered->Filter=AnsiString("TableNum = ")+AnsiString(TableChoose)
+" AND Status = '未結帳'";
TableOrdered->Filtered = true;
//將已經有的菜單填入ListView中
ListView1->Items->Clear();
TListItem *NewItem;
int dishnum;
TableOrdered->First();
for(int i=0;i<TableOrdered->RecordCount;i++)
{
dishnum=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(TableOrdered->FieldByName("Amount")->AsString);
NewItem->SubItems->Add(tmpTable->FieldByName("DishPrice")->AsString);
NewItem->SubItems->Add(AnsiString(dishnum)); //這一列隱藏的,在視圖中看不到
NewItem->SubItems->Add(tmpTable->FieldByName("DisCount")->AsString);
}
else
{
MessageDlg("找不到該紀錄!",mtError, TMsgDlgButtons() << mbOK, 0);
}
TableOrdered->Next();
}
}
}
//---------------------------------------------------------------------------
void __fastcall TFormOrder::BitBtnAddClick(TObject *Sender)
{
if(TableChoose == -1)
{
MessageDlg("請先選擇餐桌號!",
mtInformation, TMsgDlgButtons() << mbOK, 0);
return;
}
if(TreeViewOrder->Selected->Level != 2)
{
MessageDlg("請選定一個菜譜名!",
mtInformation, TMsgDlgButtons() << mbOK, 0);
return;
}
//根據選擇的菜譜名,查找以經點的菜中有沒有該菜,如果有,將其數量增一,
//如果沒有,新增紀錄
bool havedish=false;
int seldish=FormClassDishMan->TableDish->FieldByName("DishNum")->AsInteger;
TableOrdered->First();
for(int i=0;i<TableOrdered->RecordCount;i++)
{
if(TableOrdered->FieldByName("DishNum")->AsInteger == seldish)
{
//數量增一
TableOrdered->Edit(); //設置為可編輯模式
TableOrdered->FieldByName("Amount")->AsInteger +=1;
TableOrdered->Post();
ComboBoxTableChange(this); //刷新列表視圖的顯示
havedish=true;
break;
}
TableOrdered->Next();
}
if(!havedish) //需要增加的菜譜名不再已選菜單中
{
TableOrdered->Append();
TableOrdered->FieldByName("DishNum")->AsInteger=seldish;
TableOrdered->FieldByName("TableNum")->AsInteger=TableChoose;
TableOrdered->FieldByName("Amount")->AsFloat=1.0;
TableOrdered->FieldByName("Status")->AsString="未結帳";
//記錄日期、時間
DateSeparator = '-';
ShortDateFormat = "yyyy/m/d";
TableOrdered->FieldByName("Date")->AsString=DateToStr(Date());
TableOrdered->FieldByName("Time")->AsString=TimeToStr(Time());
TableOrdered->FieldByName("UserID")->AsInteger= FormMain->UserID;
TableOrdered->Post();
ComboBoxTableChange(this); //刷新列表視圖的顯示
}
}
//---------------------------------------------------------------------------
void __fastcall TFormOrder::BitBtnDelClick(TObject *Sender)
{
//ListView1->MultiSelect = false;
if(ListView1->SelCount != 1 ) //選中一個需要退點的菜名
{
MessageDlg("請先從右邊選擇要退點的菜譜名稱!",
mtInformation, TMsgDlgButtons() << mbOK, 0);
return;
}
//菜譜編號
int seldish=ListView1->Selected->SubItems->Strings[2].ToInt();
//在TableOrdered中查找要退的菜譜編號,
//因為TableOrdered沒有索引,沒有key,所以只能通過循環判斷
TableOrdered->First();
for(int i=0;i<TableOrdered->RecordCount;i++)
{
if(TableOrdered->FieldByName("DishNum")->AsInteger == seldish)
{
//如果數量大于1,則減一,如果數量等于1,則刪除數據庫中該條記錄
if(TableOrdered->FieldByName("Amount")->AsInteger > 1)
{
TableOrdered->Edit();
TableOrdered->FieldByName("Amount")->AsInteger -= 1;
TableOrdered->Post();
//ComboBoxTableChange(this);
ListView1->Selected->SubItems->Strings[0]=
ListView1->Selected->SubItems->Strings[0].ToInt() - 1;
}
else //Amount == 1
{
TableOrdered->Delete();
ComboBoxTableChange(this);
}
break; //跳出循環
}
TableOrdered->Next();
}
}
//---------------------------------------------------------------------------
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -