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

📄 unit2.cpp

📁 餐厅结账管理程序提供中小型餐厅所需要的点菜结账功能
💻 CPP
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TFormClassDishMan *FormClassDishMan;
//---------------------------------------------------------------------------
__fastcall TFormClassDishMan::TFormClassDishMan(TComponent* Owner)
        : TForm(Owner)
{
  TableDish->Open();
  TableClass->Open();
  RefreshTreeView();
  RefreshDBComboBoxDishClass();
  TreeView1->OnClick=MyTreeViewClick;
}
//---------------------------------------------------------------------------
void __fastcall TFormClassDishMan::RefreshDBComboBoxDishClass(void)
{
  TableClass->First();
  for(int i=0;i<TableClass->RecordCount;i++)
  {
     //将菜品加入下拉菜单
     DBComboBoxDishClass->Items->Add(
            TableClass->FieldByName("ClassNum")->AsString );
     TableClass->Next();
  }
}
//---------------------------------------------------------------------------

void __fastcall TFormClassDishMan::RefreshTreeView(void)
{
  TTreeNode *rNode,*mNode;
  AnsiString DishClass;
  int i,j;

  TreeView1->Items->Clear();
  TreeView1->ReadOnly=true;
  TableClass->First();
  TableDish->First();

  rNode=TreeView1->Items->Add(NULL,"菜品/菜谱");
  for(i=0;i<TableClass->RecordCount;i++)
  {
     AnsiString Num=TableClass->FieldByName("ClassNum")->AsString;
     //将菜品加入树视图
     DishClass=TableClass->FieldByName("ClassNum")->AsString +
                TableClass->FieldByName("ClassName")->AsString;
     mNode=TreeView1->Items->AddChild(rNode,DishClass);
     //将Table2中对应此菜品的菜谱加入为该菜品的字节点
     TableDish->First();
     for(j=0;j<TableDish->RecordCount;j++)
     {
       if(TableDish->FieldByName("ClassNum")->AsString == Num)
       {
         TreeView1->Items->AddChild(mNode,
                      TableDish->FieldByName("DishName")->AsString);
       }
       TableDish->Next();
     }
     TableClass->Next();
  }
  //展开根节点的一级子目录
  rNode->Expand(false);
}
//---------------------------------------------------------------------------
void __fastcall TFormClassDishMan::MyTreeViewClick(TObject *Sender)
{
  TTreeView *tmpTree=(TTreeView *)Sender;
  if(tmpTree->Selected->Level == 1)  //菜品
  {
    //寻找Table1中的相应纪录
    TableClass->FindKey(ARRAYOFCONST((tmpTree->Selected->Text[1])));
  }
  else if(tmpTree->Selected->Level == 2)//菜谱
  {
    //根据树视图中的Text属性在Table2中查找对应纪录
    TableDish->IndexFieldNames = "DishName";
    TableDish->SetKey();
    TableDish->FieldByName("DishName")->Value=tmpTree->Selected->Text;
    if(!TableDish->GotoKey())
    {
      MessageDlg("找不到该纪录,,建议重新载入数据库",
              mtError, TMsgDlgButtons() << mbOK, 0);
    }
  }
}
//---------------------------------------------------------------------------

void __fastcall TFormClassDishMan::BitBtnReloadClick(TObject *Sender)
{
  RefreshDBComboBoxDishClass();
  RefreshTreeView();
}
//---------------------------------------------------------------------------

void __fastcall TFormClassDishMan::BitBtnModifyClick(TObject *Sender)
{
  if(BitBtnModify->Caption == "切换至修改模式")
  {
    DBEditClassNum->ReadOnly=false;
    DBEditClassName->ReadOnly=false;
    DBEditDishNum->ReadOnly=false;
    DBEditDishName->ReadOnly=false;
    DBEditDisCount->ReadOnly=false;
    DBEditUnitName->ReadOnly=false;
    DBEditDishPrice->ReadOnly=false;
    DBMemoDishDescription->ReadOnly=false;
    DBComboBoxDishClass->ReadOnly=false;
    DBComboBoxDishClass->Enabled=true;
    BitBtnModify->Caption="切换至浏览模式";
  }
  else
  {
    DBEditClassNum->ReadOnly=true;
    DBEditClassName->ReadOnly=true;
    DBEditDishNum->ReadOnly=true;
    DBEditDishName->ReadOnly=true;
    DBEditDisCount->ReadOnly=true;
    DBEditUnitName->ReadOnly=true;
    DBEditDishPrice->ReadOnly=true;
    DBMemoDishDescription->ReadOnly=true;
    DBComboBoxDishClass->ReadOnly=true;
    DBComboBoxDishClass->Enabled=false;
    BitBtnModify->Caption="切换至修改模式";
  }
}
//---------------------------------------------------------------------------


void __fastcall TFormClassDishMan::BitBtnDeleteClick(TObject *Sender)
{
  if(!TreeView1->Selected)
  {
    MessageDlg("请先选中树视图中要删除的项!",
               mtInformation, TMsgDlgButtons() << mbOK, 0);
    return;
  }
  if(TreeView1->Selected->Level == 1)  //菜品
  {
    //寻找TableClass中的相应纪录
    if(MessageDlg("确认删除菜品:"+TreeView1->Selected->Text+"?",
               mtConfirmation, TMsgDlgButtons() << mbYes << mbNo, 0)
               ==mrYes)
    {
      TableClass->FindKey(ARRAYOFCONST((TreeView1->Selected->Text[1])));
      TableClass->Delete();
      TreeView1->Selected->Delete();
    }
  }
  else if(TreeView1->Selected->Level == 2)//菜谱
  {
    //根据树视图中的Text属性在TableDish中查找对应纪录
    if(MessageDlg("确认删除菜谱:"+TreeView1->Selected->Text+"?",
               mtConfirmation, TMsgDlgButtons() << mbYes << mbNo, 0)
               ==mrYes)
    {
      TableDish->FindKey(ARRAYOFCONST((TreeView1->Selected->Text)));
      TableDish->Delete();
      TreeView1->Selected->Delete();
    }
  }
  //焦点返回目录树
  TreeView1->SetFocus();
}
//---------------------------------------------------------------------------

void __fastcall TFormClassDishMan::BitBtnAddClick(TObject *Sender)
{
  if(!TreeView1->Selected)
  {
    MessageDlg("请选中根节点添加菜品,选中菜品添加菜谱!",
               mtInformation, TMsgDlgButtons() << mbOK, 0);
    return;
  }
  if(TreeView1->Selected->Level == 0)  //根节点,添加菜品
  {
    //在Table1中添加纪录
    char clsNum=TreeView1->Selected->GetLastChild()->Text[1];
    TableClass->Append();
    TableClass->FieldValues["ClassNum"] =AnsiString(char(clsNum+1));
    TableClass->FieldValues["ClassName"] = "未定菜名";
    TableClass->Post();
    TreeView1->Items->AddChild(TreeView1->Items->GetFirstNode(),
                TableClass->FieldByName("ClassNum")->AsString +
                TableClass->FieldByName("ClassName")->AsString);
    TreeView1->Items->GetFirstNode()->GetLastChild()->Selected=true;
    TreeView1->SetFocus();
  }
  else if(TreeView1->Selected->Level == 1)//菜品节点,添加菜谱
  {
    //在Table2中添加纪录
    AnsiString NewDishName;
    if (InputQuery("新增菜谱", "输入新增菜品的菜名", NewDishName))
    {
      TTreeNode *rNode;

      TableDish->Append();
      TableDish->FieldValues["ClassNum"] = AnsiString(TreeView1->Selected->Text[1]);
      TableDish->FieldValues["DishName"] = NewDishName;
      //DishNum自增型
      TableDish->Post();
      rNode=TreeView1->Items->AddChild(TreeView1->Selected,
                  TableDish->FieldByName("DishName")->AsString);
      rNode->Selected=true;
      TreeView1->SetFocus();
    }
  }
}
//---------------------------------------------------------------------------


⌨️ 快捷键说明

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