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

📄 deptmanageunit.cpp

📁 指纹门禁机管理系统
💻 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 + -