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

📄 departmenttree.cpp

📁 航空公司简单考勤系统:主要运用指纹管理深圳航空公司的会议签到管理系统
💻 CPP
字号:
// DepartmentTree.cpp : implementation file
//


#include "stdafx.h"
#include <assert.h>
#include "resource.h"
#include "DepartmentTree.h"
#include "Demo_airline.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

extern CDemo_airlineApp theApp;

CDepartmentTree::CDepartmentTree()
{
    m_oMap.RemoveAll();
}

CDepartmentTree::~CDepartmentTree()
{
    m_oMap.RemoveAll();
}

BOOL CDepartmentTree::ReadDepartment(CTreeCtrl *pTreeCtrl)
{
    assert(NULL != pTreeCtrl);
    
    m_oMap.RemoveAll();
    pTreeCtrl->DeleteAllItems();
    try 
    {
        _RecordsetPtr m_pRecordset;
        m_pRecordset.CreateInstance(_uuidof(Recordset)); 
        
        //m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=DB.mdb","","",adModeUnknown);
        m_pRecordset->Open("select * from Department", theApp.m_pConnection.GetInterfacePtr(), 
            adOpenDynamic, adLockOptimistic, adCmdText);
        
        //执行SQL语句得到一个记录集 
        m_pRecordset->MoveFirst(); 
        
        while(!m_pRecordset->adoEOF) 
            //遍历所有记录 
        { 
            CString strParentID = (char*)(_bstr_t)(m_pRecordset->Fields->GetItem(_variant_t("ParentID"))->Value);
            CString strDepartID = (char*)(_bstr_t)(m_pRecordset->Fields->GetItem(_variant_t("DepartmentID"))->Value);
            CString strDepartName = (char*)(_bstr_t)(m_pRecordset->Fields->GetItem(_variant_t("DepartmentName"))->Value);
            
            //得到字段BlockIndex的值 
            if(FALSE == strParentID.IsEmpty() && FALSE == strDepartID.IsEmpty() && FALSE == strDepartName.IsEmpty()) 
            {
                FillDepartment(pTreeCtrl, strParentID, strDepartID, strDepartName);
            }   
            m_pRecordset->MoveNext(); 
        } 
        
        m_pRecordset->Close(); 
    } 
    
    catch(_com_error e) //异常处理 
    { 
        AfxMessageBox(e.ErrorMessage()); 
    } 
    
//    HTREEITEM hRoot = pTreeCtrl->GetRootItem();
//    pTreeCtrl->Expand(hRoot, TVE_EXPAND);
    
    return TRUE;
}

BOOL CDepartmentTree::InsertDepartment(LPCTSTR lpszParentID, LPCTSTR lpszDepartmentID, LPCTSTR lpszDepartmentName)
{
    try 
    {
        _RecordsetPtr m_pRecordset;
   
        m_pRecordset.CreateInstance(_uuidof(Recordset)); 
        
        //m_pConnection->Open("dsn=adotest", "", "", 0);
       // m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=DB.mdb","","",adModeUnknown);
        CString strCmd;
        strCmd.Format("insert into Department (ParentID, DepartmentID, DepartmentName) values('%s', '%s', '%s')", 
            lpszParentID, lpszDepartmentID, lpszDepartmentName);
        theApp.m_pConnection->Execute(strCmd.AllocSysString(), NULL, 0);
//        m_pRecordset->Open(strCmd.AllocSysString(), m_pConnection.GetInterfacePtr(), 
//            adOpenDynamic, adLockOptimistic, adCmdText);
//        m_pRecordset->Close(); 
       
    } 
    
    catch(_com_error e) //异常处理 
    { 
        AfxMessageBox(e.ErrorMessage()); 
    } 
    
    return TRUE;
}

BOOL CDepartmentTree::InitImageList(CTreeCtrl *pTreeCtrl)
{
    m_imgList.Create(16, 16, ILC_COLOR4, 2, 6);
    m_imgList.SetBkColor(RGB(255, 255, 255));
    m_imgList.Add(AfxGetApp()->LoadIcon(IDI_FOLDER_CLOSE));
    m_imgList.Add(AfxGetApp()->LoadIcon(IDI_FOLDER_OPEN));
    pTreeCtrl->SetImageList(&m_imgList, TVSIL_NORMAL);

    return TRUE;
}

BOOL CDepartmentTree::FillDepartment(CTreeCtrl *pTreeCtrl, LPCTSTR lpszParentID, 
                              LPCTSTR lpszMyID, LPCTSTR lpszMyName)
{
    assert(NULL != pTreeCtrl);

    HTREEITEM hSetItem = TVI_ROOT;
    if(0 != strcmp(lpszParentID, "0"))
    {
        // 不是总部
        HTREEITEM hItem = 0;
        BOOL bRet = m_oMap.Lookup((LPCTSTR)lpszParentID, (void *&)hItem);
        if(TRUE == bRet)
        {
            hSetItem = hItem;
        }
    }

    TV_INSERTSTRUCT tvInsert;
    tvInsert.hParent = hSetItem;
    tvInsert.hInsertAfter = TVI_LAST;
    tvInsert.item.iImage = 0;
    tvInsert.item.iSelectedImage = 1;
    tvInsert.item.pszText = (char *)lpszMyName;
    tvInsert.item.mask = TVIF_IMAGE|TVIF_SELECTEDIMAGE|TVIF_TEXT;
    HTREEITEM hItem = pTreeCtrl->InsertItem(&tvInsert);
    pTreeCtrl->Expand(hSetItem, TVE_EXPAND);
    
    m_oMap.SetAt(lpszMyID, hItem);

    return TRUE;
}

BOOL CDepartmentTree::GetSelDepartmentID(CTreeCtrl *pTreeCtrl, char *lpszDepartmentID)
{
    assert(NULL != pTreeCtrl && NULL != lpszDepartmentID);

    HTREEITEM hSelItem = pTreeCtrl->GetSelectedItem();
    if(NULL == hSelItem)
    {
        return FALSE;
    }

    return GetDepartmentID(pTreeCtrl, hSelItem, lpszDepartmentID);
}

BOOL CDepartmentTree::GetDepartmentID(CTreeCtrl *pTreeCtrl, HTREEITEM hGetItem, char *lpszDepartmentID)
{
    assert(NULL != pTreeCtrl && NULL != lpszDepartmentID && NULL != hGetItem);

	POSITION pos = m_oMap.GetStartPosition();
    do 
    {
        CString strID;
        HTREEITEM hInMapItem;
        m_oMap.GetNextAssoc(pos, strID, (void *&)hInMapItem);
        if(hInMapItem == hGetItem)
        {
            strcpy(lpszDepartmentID, (LPCTSTR)strID);
            return TRUE;
        }
    } while(NULL != pos);

    return FALSE;
}

BOOL CDepartmentTree::FindDepartmentID(LPCTSTR lpszDepartmentID, HTREEITEM *phRetItem/*=NULL*/)
{
    assert(NULL != lpszDepartmentID);
    
    HTREEITEM hItem = 0;
    BOOL bRet = m_oMap.Lookup(lpszDepartmentID, (void *&)hItem);
    if(TRUE == bRet)
    {
        if(NULL != phRetItem)
        {
            *phRetItem = hItem;
        }
        return TRUE;
    }
    
    return FALSE;
}

⌨️ 快捷键说明

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