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