#include "stdafx.h" #include "CZHZLDLG.h" #include "uiiado.h" #include "LJCSDlg.h" #define IMG_ROOT 0 #define IMG_DEPT 1 #define IMG_PRO 2 #define IMG_MEMB 14 IMPLEMENT_DYNAMIC(CZHZLDLG, CDialog) CZHZLDLG::CZHZLDLG(CWnd* pParent /*=NULL*/) : CDialog(CZHZLDLG::IDD, pParent) { m_pMySQLDb = NULL; } CZHZLDLG::~CZHZLDLG() { if (m_pMySQLDb != NULL) delete m_pMySQLDb; } void CZHZLDLG::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Control(pDX, IDC_TREE1, m_wndTree); DDX_Control(pDX, IDC_LIST1, m_wndList); } BEGIN_MESSAGE_MAP(CZHZLDLG, CDialog) ON_BN_CLICKED(IDOK, &CZHZLDLG::OnBnClickedOk) ON_NOTIFY(TVN_SELCHANGED, IDC_TREE1, &CZHZLDLG::OnTvnSelchangedTree1) END_MESSAGE_MAP() BOOL CZHZLDLG::InitADOServer() { m_pMySQLDb = CLJCSDlg::GetSHEarthWormConnect(); return (m_pMySQLDb != NULL) ? TRUE : FALSE; } BOOL CZHZLDLG::OnInitDialog() { CDialog::OnInitDialog(); if (!InitADOServer()) { AfxMessageBox(_T("连接数据库服务器失败!请检查数据库测试连接!")); return FALSE; } CBitmap bmp; if (!bmp.LoadBitmap(IDB_BITMAPPRIV)) { AfxMessageBox(_T("Can't load bitmap IDB_BITMAPPRIV")); ASSERT(FALSE); return FALSE; } BITMAP bmpObj; bmp.GetBitmap(&bmpObj); UINT nFlags = ILC_COLOR24 | ILC_MASK; m_Imagelist.Create(16, bmpObj.bmHeight, nFlags, 0, 0); m_Imagelist.Add(&bmp, RGB(255, 0, 0)); m_wndTree.SetImageList(&m_Imagelist, TVSIL_NORMAL); m_wndList.SetImageList(&m_Imagelist, LVSIL_SMALL); m_wndList.InsertColumn(0, _T("姓名"), LVCFMT_LEFT, 100); m_wndList.InsertColumn(1, _T("IP"), LVCFMT_LEFT, 180); m_wndList.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_SINGLEROW); ShowDepartView(); return TRUE; } void CZHZLDLG::ShowDepartView() { HTREEITEM hRoot = m_wndTree.InsertItem(_T("部门视图"), IMG_ROOT, IMG_ROOT); CString sSQL; sSQL = _T("select DISTINCT PartMt from Aec_Employees"); CString sDept, sPro; CStringArray arVals,arPros; m_pMySQLDb->GetSelData(sSQL, arVals); for (int i = 0;i < arVals.GetSize();i++) { sDept = arVals.GetAt(i); HTREEITEM hDept = m_wndTree.InsertItem(sDept, IMG_DEPT, IMG_DEPT, hRoot); sSQL.Format(_T("select DISTINCT Pro from Aec_Employees where PartMt='%s'"), sDept); arPros.RemoveAll(); m_pMySQLDb->GetSelData(sSQL, arPros); for (int j = 0;j < arPros.GetSize();j++) { sPro = arPros.GetAt(j); m_wndTree.InsertItem(sPro, IMG_PRO, IMG_PRO, hDept); } m_wndTree.SelectItem(hDept); m_wndTree.Expand(hDept, TVE_EXPAND); } m_wndTree.SelectItem(hRoot); m_wndTree.Expand(hRoot, TVE_EXPAND); } void CZHZLDLG::OnBnClickedOk() { m_sDept = _T(""); m_sPro = _T(""); m_sName = _T(""); m_sIP = _T(""); m_bSelectValidate = FALSE; POSITION ps = m_wndList.GetFirstSelectedItemPosition(); if (ps != NULL) { int nItem = m_wndList.GetNextSelectedItem(ps); if (nItem != -1) { m_sName = m_wndList.GetItemText(nItem, 0); m_sIP = m_wndList.GetItemText(nItem, 1); HTREEITEM hSelect = m_wndTree.GetSelectedItem(); if (hSelect != NULL) { int nImg = -1, nImgSel = -1; m_wndTree.GetItemImage(hSelect, nImg, nImgSel); if (nImg == IMG_PRO) { m_sPro = m_wndTree.GetItemText(hSelect); m_sDept = m_wndTree.GetItemText(m_wndTree.GetParentItem(hSelect)); m_bSelectValidate = TRUE; } } } } if (!m_bSelectValidate) { AfxMessageBox(_T("请选择账户人员!")); return; } OnOK(); } void CZHZLDLG::OnTvnSelchangedTree1(NMHDR* pNMHDR, LRESULT* pResult) { LPNMTREEVIEW pNMTreeView = reinterpret_cast(pNMHDR); HTREEITEM hSelect = pNMTreeView->itemNew.hItem; if (hSelect != NULL) { int nImg = -1, nImgSel = -1; m_wndTree.GetItemImage(hSelect, nImg, nImgSel); if (nImg == IMG_PRO) { CString sPro = m_wndTree.GetItemText(hSelect); CString sDept = m_wndTree.GetItemText(m_wndTree.GetParentItem(hSelect)); m_wndList.DeleteAllItems(); CString sSQL; sSQL.Format(_T("select Name,IP from Aec_Employees where PartMt='%s' and Pro='%s'"), sDept, sPro); CUIIValueTable tbl; m_pMySQLDb->GetSelData(sSQL, tbl); tbl.ShowToListCtrl(&m_wndList, IMG_MEMB); } else { m_wndList.DeleteAllItems(); } } }