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