📄 deptmanageunit.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "DeptManageUnit.h"
#include "DeptInputUnit.h"
#include "EnguardCommon.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "ObjectManageUnit"
#pragma resource "*.dfm"
TDeptManageFrm *DeptManageFrm;
//---------------------------------------------------------------------------
__fastcall TDeptManageFrm::TDeptManageFrm(TComponent* Owner)
: TBaseObjectManageFrm(Owner)
{
}
//---------------------------------------------------------------------------
void TDeptManageFrm::RefreshTree()
{
pNodeRoot->DeleteChildren();
pDBAccess->GetDeptTree(tvDept);
tvDept->FullExpand();//树展开
}
//---------------------------------------------------------------------------
void TDeptManageFrm::IsButtonEnabled(bool iEnabled)
{
spbnAdd->Enabled = iEnabled;
spbnEdit->Enabled = iEnabled;
spbnDelete->Enabled = iEnabled;
}
//---------------------------------------------------------------------------
void __fastcall TDeptManageFrm::FormShow(TObject *Sender)
{
RefreshTree();
IsButtonEnabled(false);
switch(OperateMode)
{
case omAdd:
{
tbTools->Visible = true;
}break;
case omView:
{
tbTools->Visible = false;
}break;
}
}
//---------------------------------------------------------------------------
void __fastcall TDeptManageFrm::spbnAddClick(TObject *Sender)
{
TTreeNode *aNewNode;
TTreeNode* lCurNode = tvDept->Selected;
if (lCurNode == NULL)
return;
if(lCurNode != pNodeRoot)
{
if(lCurNode->Parent->Parent == pNodeRoot)
{
Application->MessageBoxA("对不起,部门级数不能超过3级!","提示信息",MB_OK + MB_ICONINFORMATION);
return;
}
}
TDeptInputFrm* pDeptInputFrm = new TDeptInputFrm(this);
pDeptInputFrm->SetCaption("部门管理->","新建部门");
pDeptInputFrm->SetOperateMode(omAdd);
//得到上级部门信息
DeptInfo_T aParsentDept;
aParsentDept.DeptID = lCurNode->StateIndex;
if (aParsentDept.DeptID == 0) //根结点
{
strcpy(aParsentDept.DeptName,lCurNode->Text.c_str());
}
else
{
pDBAccess->GetDeptInfo(aParsentDept.DeptID,&aParsentDept);
}
pDeptInputFrm->SetParsentDeptInfo(aParsentDept);
pDeptInputFrm->ShowModal();
DeptInfo_T aDeptInfo;
bool lOK = pDeptInputFrm->GetDeptInfo(aDeptInfo);
if(lOK)
{
int lRV = pDBAccess->InsertDeptInfo(aDeptInfo);
if (lRV == OK)
{
AnsiString lMsg;
lMsg = "新建部门:" + AnsiString(aDeptInfo.DeptName) + " 成功!";
Application->MessageBoxA(lMsg.c_str(),"提示信息",MB_OK + MB_ICONINFORMATION);
RefreshTree();
}
else
{
Application->MessageBoxA("新建部门失败!","提示信息",MB_OK + MB_ICONERROR);
}
}
delete pDeptInputFrm;
}
//---------------------------------------------------------------------------
void __fastcall TDeptManageFrm::spbnEditClick(TObject *Sender)
{
TTreeNode *pCurNode,*aNewNode;
pCurNode = tvDept->Selected;
if(pCurNode == pNodeRoot) //不能修改根节点
return;
TDeptInputFrm* pDeptInputFrm = new TDeptInputFrm(this);
pDeptInputFrm->SetCaption("部门管理->","修改部门信息");
pDeptInputFrm->SetOperateMode(omEdit);
//得到上级部门信息
DeptInfo_T aParsentDept;
aParsentDept.DeptID = pCurNode->Parent->StateIndex;
if (aParsentDept.DeptID == 0) //根结点
{
strcpy(aParsentDept.DeptName,tvDept->TopItem->Text.c_str());
}
else
{
pDBAccess->GetDeptInfo(aParsentDept.DeptID,&aParsentDept);
}
pDeptInputFrm->SetParsentDeptInfo(aParsentDept);
DeptInfo_T aDeptInfo;
int lDeptID = pCurNode->StateIndex;
pDBAccess->GetDeptInfo(lDeptID,&aDeptInfo);
pDeptInputFrm->SetCurDeptInfo(aDeptInfo);
pDeptInputFrm->ShowModal();
bool lOK = pDeptInputFrm->GetDeptInfo(aDeptInfo);
if(lOK)
{
int lRV = pDBAccess->UpdateDeptInfo(aDeptInfo.DeptID,aDeptInfo);
if (lRV == OK)
{
Application->MessageBoxA("修改部门信息成功!","提示信息",MB_OK + MB_ICONINFORMATION);
RefreshTree();
}
else
{
Application->MessageBoxA("修改部门信息失败!","提示信息",MB_OK + MB_ICONERROR);
}
}
delete pDeptInputFrm;
}
//---------------------------------------------------------------------------
void __fastcall TDeptManageFrm::spbnDeleteClick(TObject *Sender)
{
//删除部门
TTreeNode *pCurNode = tvDept->Selected;
if(pCurNode == NULL)
return;
if(pCurNode == pNodeRoot)//不能删除根节点
return;
AnsiString lMsg;
lMsg = "您确认要删除:" + pCurNode->Text + " 部门吗?";
if(Application->MessageBoxA(lMsg.c_str(),"提示信息",MB_YESNO + MB_ICONQUESTION)==ID_NO)
return;
aDeptInfo.DeptID = pCurNode->StateIndex; //当前选中的部门ID
int lRV = pDBAccess->DeleteDeptInfo(aDeptInfo.DeptID);
if(lRV == OK)
{
lMsg = pCurNode->Text + " 部门已被成功删除!";
Application->MessageBoxA(lMsg.c_str(),"提示信息",MB_OK + MB_ICONINFORMATION);
RefreshTree();
}
else
{
Application->MessageBoxA("删除部门失败,可能该部门内有员工记录,请查看确认!","提示信息",MB_OK + MB_ICONINFORMATION);
}
}
//---------------------------------------------------------------------------
void __fastcall TDeptManageFrm::tvDeptDblClick(TObject *Sender)
{
TTreeNode *pCurNode = tvDept->Selected;
if(pCurNode == NULL)
return;
if(pCurNode == pNodeRoot)//不能是根节点
return;
switch(OperateMode)
{
case omSelect: //选择部门模式
{
int lDeptID = pCurNode->StateIndex;
if (pDBAccess->GetDeptInfo(lDeptID,&aDeptInfo) == OK)
Close();
}break;
case omAdd:
case omView: //查看模式
{
TDeptInputFrm* pDeptInputFrm = new TDeptInputFrm(this);
//得到上级部门信息
DeptInfo_T aParsentDept;
aParsentDept.DeptID = pCurNode->Parent->StateIndex;
if (aParsentDept.DeptID == 0) //根结点
{
strcpy(aParsentDept.DeptName,pCurNode->Text.c_str());
}
else
{
pDBAccess->GetDeptInfo(aParsentDept.DeptID,&aParsentDept);
}
DeptInfo_T aDeptInfo;
int lDeptID = pCurNode->StateIndex;
pDBAccess->GetDeptInfo(lDeptID,&aDeptInfo);
pDeptInputFrm->SetOperateMode(omView);
pDeptInputFrm->SetParsentDeptInfo(aParsentDept);
pDeptInputFrm->SetCurDeptInfo(aDeptInfo);
pDeptInputFrm->SetCaption("部门管理->","查看部门信息");
pDeptInputFrm->ShowModal();
delete pDeptInputFrm;
}break;
}
}
//---------------------------------------------------------------------------
bool TDeptManageFrm::GetDeptInfo(DeptInfo_T &oDeptInfo)
{
AnsiString lDeptName = aDeptInfo.DeptName;
if(lDeptName == "")
return false;
oDeptInfo = aDeptInfo;
return true;
}
//---------------------------------------------------------------------------
void TDeptManageFrm::SetOperateMode(OperateMode_T iMode)
{
OperateMode = iMode;
}
//---------------------------------------------------------------------------
void __fastcall TDeptManageFrm::FormCreate(TObject *Sender)
{
pDBAccess = new TDBAccess();
OperateMode = omView;
pNodeRoot = tvDept->Items->Item[0];
pNodeRoot->ImageIndex = 0;
pNodeRoot->SelectedIndex = 0;
pDBAccess->InitFixedDept();
}
//---------------------------------------------------------------------------
void __fastcall TDeptManageFrm::FormDestroy(TObject *Sender)
{
delete pDBAccess;
}
//---------------------------------------------------------------------------
void __fastcall TDeptManageFrm::tvDeptClick(TObject *Sender)
{
TTreeNode *Node;
Node = tvDept->Selected;
if(Node == NULL)
IsButtonEnabled(false);
else
IsButtonEnabled(true);
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -