📄 employeemanager.cpp
字号:
// EmployeeManager.cpp : implementation file
//
#include "stdafx.h"
#include "OIL.h"
#include "EmployeeManager.h"
#include "EmployeeAdd.h"
#include "function.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
extern COILApp theApp;
/////////////////////////////////////////////////////////////////////////////
// CEmployeeManager dialog
CEmployeeManager::CEmployeeManager(CWnd* pParent /*=NULL*/)
: CDialog(CEmployeeManager::IDD, pParent)
{
//{{AFX_DATA_INIT(CEmployeeManager)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}
void CEmployeeManager::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CEmployeeManager)
DDX_Control(pDX, IDC_LIST_EMPLOYEE, m_listEmployee);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CEmployeeManager, CDialog)
//{{AFX_MSG_MAP(CEmployeeManager)
ON_BN_CLICKED(IDC_EMPLOYEE_ADD, OnEmployeeAdd)
ON_BN_CLICKED(IDC_EMPLOYEE_EDIT, OnEmployeeEdit)
ON_BN_CLICKED(IDC_EMPLOYEE_DEL, OnEmployeeDel)
ON_NOTIFY(NM_DBLCLK, IDC_LIST_EMPLOYEE, OnDblclkListEmployee)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CEmployeeManager message handlers
void CEmployeeManager::OnEmployeeAdd()
{
// TODO: Add your control notification handler code here
CEmployeeAdd m_dlgEmployeeAdd;
m_dlgEmployeeAdd.m_nDoWhat=ADD; //增加员工
if(m_dlgEmployeeAdd.DoModal()==IDOK)
{
//更新数据
CString sql="select EmpID,EmpName,Duty,Sex,Title,Address,Telephone from employee";
ReadtoListCtrl(&m_listEmployee,sql);
}
}
void CEmployeeManager::OnEmployeeEdit()
{
// TODO: Add your control notification handler code here
POSITION pos = m_listEmployee.GetFirstSelectedItemPosition();
//如果选中一行
if(pos)
{
int nItem = m_listEmployee.GetNextSelectedItem(pos);
CEmployeeAdd m_dlgEmployeeAdd;
//传送参数
m_dlgEmployeeAdd.m_nDoWhat=EDIT; //修改客户资料
m_dlgEmployeeAdd.m_strEmpID =m_listEmployee.GetItemText(nItem,0);
m_dlgEmployeeAdd.m_strEmpName =m_listEmployee.GetItemText(nItem,1);
m_dlgEmployeeAdd.m_strDuty =m_listEmployee.GetItemText(nItem,2);
m_dlgEmployeeAdd.m_strSex =m_listEmployee.GetItemText(nItem,3);
m_dlgEmployeeAdd.m_strTitle =m_listEmployee.GetItemText(nItem,4);
m_dlgEmployeeAdd.m_strTele =m_listEmployee.GetItemText(nItem,5);
m_dlgEmployeeAdd.m_strAddress =m_listEmployee.GetItemText(nItem,6);
//显示对话框
if(m_dlgEmployeeAdd.DoModal()==IDOK)
{
//更新数据
CString sql="select EmpID,EmpName,Duty,Sex,Title,Address,Telephone from employee";
ReadtoListCtrl(&m_listEmployee,sql);
//选中修改行
DispListCtrlRow(&m_listEmployee,nItem);
}
}
else
AfxMessageBox("请选择一行数据!");
}
BOOL CEmployeeManager::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
// TODO: Add extra initialization here
//设置List Control背景色及字体颜色
m_listEmployee.SetBkColor(RGB(240,247,233));;
m_listEmployee.SetTextColor(RGB(250,0,0));
//清空List控件的数据
for(int delcolumn=100;delcolumn>=0;delcolumn--)
m_listEmployee.DeleteColumn(delcolumn);
//设置List控件的列
DWORD dwStyle;
RECT rect;
LV_COLUMN lvc;
dwStyle = m_listEmployee.GetStyle();
dwStyle |= LVS_EX_GRIDLINES |LVS_EX_FULLROWSELECT|LVS_SHOWSELALWAYS ;
m_listEmployee.SetExtendedStyle(dwStyle);
m_listEmployee.GetClientRect(&rect);
lvc.mask = LVCF_TEXT | LVCF_SUBITEM | LVCF_WIDTH |LVCF_FMT;
lvc.fmt=LVCFMT_LEFT;
lvc.iSubItem = 0;
lvc.pszText = _T("编号");
lvc.cx = 60;
m_listEmployee.InsertColumn(1,&lvc);
lvc.iSubItem = 1;
lvc.pszText = _T("姓名");
lvc.cx = 150;
m_listEmployee.InsertColumn(2,&lvc);
lvc.iSubItem = 2;
lvc.pszText = _T("职责");
lvc.cx = 60;
m_listEmployee.InsertColumn(3,&lvc);
lvc.iSubItem = 3;
lvc.pszText = _T("姓别");
lvc.cx = 60;
m_listEmployee.InsertColumn(4,&lvc);
lvc.iSubItem = 4;
lvc.pszText = _T("职称");
lvc.cx = 120;
m_listEmployee.InsertColumn(5,&lvc);
lvc.iSubItem = 5;
lvc.pszText = _T("联系地址");
lvc.cx = 80;
m_listEmployee.InsertColumn(6,&lvc);
lvc.iSubItem = 6;
lvc.pszText = _T("联系电话");
lvc.cx = 80;
m_listEmployee.InsertColumn(7,&lvc);
//显示数据
CString sql="select EmpID,EmpName,Duty,Sex,Title,Address,Telephone from employee";
ReadtoListCtrl(&m_listEmployee,sql);
//设置选取行
int nItem=0;
DispListCtrlRow(&m_listEmployee,nItem);
return false;
//return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CEmployeeManager::OnEmployeeDel()
{
// TODO: Add your control notification handler code here
CString sql;
POSITION pos = m_listEmployee.GetFirstSelectedItemPosition();
//如果选中一行,则生成动态的sql语句
if(pos)
{
int nItem = m_listEmployee.GetNextSelectedItem(pos);
if(!(AfxMessageBox("你真的要删除此计录?",MB_YESNO)==IDYES))
{
DispListCtrlRow(&m_listEmployee,nItem);
return;
}
//生成SQL语句
sql="delete employee where EmpID='"+m_listEmployee.GetItemText(nItem,0)+"'";
//执行此sql语句
_variant_t RecordsAffected;
theApp.m_pConnection->Execute((_bstr_t)sql,&RecordsAffected,adCmdText);
//删除此行数据
m_listEmployee.DeleteItem(nItem);
//选中前一行数据
if(nItem==0)
{
nItem=0;
}
else
{
nItem--;
}
DispListCtrlRow(&m_listEmployee,nItem);
}
else
AfxMessageBox("请选择一行数据!");
}
void CEmployeeManager::OnDblclkListEmployee(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
OnEmployeeEdit();
*pResult = 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -