📄 bumenview.cpp
字号:
// BumenView.cpp : implementation file
//
#include "stdafx.h"
#include "Renshi.h"
#include "BumenView.h"
#include "BumenEditdlg.h"
#include "MainFrm.h"
#include "Class\Admin.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
extern CAdmin g_curAdmin;
/////////////////////////////////////////////////////////////////////////////
// CBumenView
IMPLEMENT_DYNCREATE(CBumenView, CFormView)
CBumenView::CBumenView()
: CFormView(CBumenView::IDD)
{
//{{AFX_DATA_INIT(CBumenView)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}
CBumenView::~CBumenView()
{
}
void CBumenView::DoDataExchange(CDataExchange* pDX)
{
CFormView::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CBumenView)
DDX_Control(pDX, IDC_TREE1, m_tree);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CBumenView, CFormView)
//{{AFX_MSG_MAP(CBumenView)
ON_BN_CLICKED(ID_ADD, OnBtn_Add)
ON_BN_CLICKED(ID_MODIFY, OnBtn_Modify)
ON_BN_CLICKED(ID_DELETE, OnBtn_Delete)
ON_WM_DESTROY()
ON_WM_SIZE()
ON_NOTIFY(NM_RCLICK, IDC_TREE1, OnRclickTree1)
ON_NOTIFY(NM_CLICK, IDC_TREE1, OnClickTree1)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CBumenView diagnostics
#ifdef _DEBUG
void CBumenView::AssertValid() const
{
CFormView::AssertValid();
}
void CBumenView::Dump(CDumpContext& dc) const
{
CFormView::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CBumenView message handlers
void CBumenView::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
if (g_curAdmin.GetUserType() != 1) //不是超级管理员
{
GetDlgItem(ID_ADD)->EnableWindow(FALSE);
GetDlgItem(ID_MODIFY)->EnableWindow(FALSE);
GetDlgItem(ID_DELETE)->EnableWindow(FALSE);
}
m_bumen.LoadBumenInfo(); //装入部门信息
/*-------------------------------------------------------------*/
m_imageList.Create(16,16,ILC_COLOR24,1,0); //创建图象列表
m_imageList.Add(AfxGetApp()->LoadIcon(IDI_ICON1));
m_tree.SetImageList(&m_imageList, LVSIL_NORMAL);
m_hRoot = m_tree.InsertItem("人事管理系统--部门信息");
AddtoTree(m_hRoot, 0);
m_tree.Expand(m_hRoot, TVE_EXPAND);
/*-------------------------------------------------------------*/
m_cp.SetParent(this);
m_cp.AddControl(IDC_TREE1, CP_RESIZE_H | CP_RESIZE_V);
m_cp.AddControl(ID_ADD, CP_MOVE_V);
m_cp.AddControl(ID_MODIFY, CP_MOVE_V);
m_cp.AddControl(ID_DELETE, CP_MOVE_V);
m_cp.AddControl(IDC_EDIT_ID,CP_MOVE_H);
m_cp.AddControl(IDC_EDIT_NAME,CP_MOVE_H);
m_cp.AddControl(IDC_EDIT_UPPERID,CP_MOVE_H);
m_cp.AddControl(IDC_EDIT_MEMO,CP_MOVE_H|CP_RESIZE_V);
m_cp.AddControl(IDC_STATIC1,CP_MOVE_H);
m_cp.AddControl(IDC_STATIC2,CP_MOVE_H);
m_cp.AddControl(IDC_STATIC3,CP_MOVE_H);
m_cp.AddControl(IDC_STATIC4,CP_MOVE_H);
m_cp.AddControl(IDC_STATIC5,CP_MOVE_H | CP_MOVE_V);
}
void CBumenView::AddtoTree(HTREEITEM m_hNode, int UpperID)
{
HTREEITEM m_hChild;
for(int i=0; i<m_bumen.a_UpperID.GetSize(); i++)
{
if (UpperID == atoi(m_bumen.a_UpperID.GetAt(i))) // 打开a_UpperID数组中等于UpperID的元素
{
m_hChild = m_tree.InsertItem(m_bumen.a_BumenName.GetAt(i), m_hNode); // 表明此元素为当前根节点的子节点,因此将其添加到Tree控件中,新节点为m_hChild
m_tree.SetItemData(m_hChild, atol(m_bumen.a_BumenID.GetAt(i))); // 使用SetItemData()函数将部门编号值也保存在新节点中
m_tree.Expand(m_hNode,TVE_EXPAND);
AddtoTree(m_hChild, atoi(m_bumen.a_BumenID.GetAt(i))); // 以新节点为根节点,再次递归调用AddtoTree()函数,将其子节点添加到Tree控件中
}
}
}
void CBumenView::OnBtn_Add()
{
HTREEITEM hNode = m_tree.GetSelectedItem();
CBumenEditDlg dlg;
dlg.m_strUpper = m_tree.GetItemText(hNode);
dlg.___UpperID = m_tree.GetItemData(hNode);
dlg.___BumenID = 0;
if(dlg.DoModal() == IDOK)
{
HTREEITEM hSelectedItem=m_tree.GetSelectedItem();
HTREEITEM hChild = m_tree.InsertItem(dlg.m_strBumenName, hSelectedItem);
m_tree.SetItemData(hChild, dlg.___BumenID); //设置新节点的值
m_tree.Expand(hSelectedItem, TVE_EXPAND); //展开hNode节点
}
}
void CBumenView::OnBtn_Modify()
{
HTREEITEM hNode = m_tree.GetSelectedItem();
if (m_tree.GetItemData(hNode) == 0)
{
MessageBox("不能修改此项");
return;
}
HTREEITEM hParent= m_tree.GetParentItem(hNode); //读取父节点
CBumenEditDlg dlg;
dlg.m_strUpper = m_tree.GetItemText(hParent);
dlg.___UpperID = m_tree.GetItemData(hParent);
dlg.___BumenID = m_tree.GetItemData(hNode);
dlg.___BumenName = m_tree.GetItemText(hNode);
dlg.m_strBumenName = m_tree.GetItemText(hNode);
if(dlg.DoModal() == IDOK)
{
m_tree.SetItemText(hNode, dlg.m_strBumenName); //设置当前节点的显示标题
m_tree.Expand(hNode, TVE_EXPAND); //展开当前节点
}
}
void CBumenView::OnBtn_Delete()
{
HTREEITEM hNode = m_tree.GetSelectedItem(); //取得当前节点
if (m_tree.GetItemData(hNode) == 0)
{
MessageBox("不能删除此项");
return;
}
CString strBumenID;
strBumenID.Format("%d", m_tree.GetItemData(hNode));
if (m_bumen.HaveSon(strBumenID) )
{
MessageBox("此部门包含下级部门,不能删除!");
return;
}
if (m_bumen.HaveYg(strBumenID) )
{
MessageBox("此部门包含员工,不能删除!");
return;
}
if (MessageBox("是否删除当前部门?", "请确认", MB_YESNO) == IDYES)
{
m_bumen.sql_delete(strBumenID); //删除表Bumen中的指定记录
m_tree.DeleteItem(hNode); //删除Tree控件中的当前节点
}
}
void CBumenView::OnDestroy()
{
CFormView::OnDestroy();
((CMainFrame*)AfxGetMainWnd())->m_pBumenView=NULL;
delete ((CMainFrame*)AfxGetMainWnd())->m_pBumenView;
}
void CBumenView::OnSize(UINT nType, int cx, int cy)
{
CFormView::OnSize(nType, cx, cy);
m_cp.MoveControls();
}
void CBumenView::OnRclickTree1(NMHDR* pNMHDR, LRESULT* pResult)
{
CPoint pt;
::GetCursorPos(&pt);
CMenu menu;
menu.LoadMenu(IDR_BUMEN_MENU);
CMenu* pMenu=menu.GetSubMenu(0);
pMenu->TrackPopupMenu(TPM_RIGHTBUTTON,pt.x,pt.y,this,NULL);
*pResult = 0;
}
void CBumenView::OnClickTree1(NMHDR* pNMHDR, LRESULT* pResult)
{
CString strBumenID;
strBumenID.Format("%d",m_tree.GetItemData(m_tree.GetSelectedItem()));
CBumen bm;
bm.GetData(strBumenID);
SetDlgItemText(IDC_EDIT_ID,strBumenID);
SetDlgItemText(IDC_EDIT_NAME,bm.GetBumenName());
SetDlgItemText(IDC_EDIT_UPPERID, m_tree.GetItemText(m_tree.GetParentItem(m_tree.GetSelectedItem())));
SetDlgItemText(IDC_EDIT_MEMO,bm.GetDescribe());
*pResult = 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -