Files
envi-code/SourceCode/Code2026/CoreCommand/CZHZLDLG.cpp
T
2026-09-28 15:28:50 +08:00

187 lines
4.0 KiB
C++

#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<LPNMTREEVIEW>(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();
}
}
}