📄 experience.cpp
字号:
//
//
/**************************************
文件名:Experience.cpp
文件类型:implementation file
功能描述:对部门的一些参数进行设置
创建人:张国
版本号:1.0
**************************************/
#include "stdafx.h"
#include "SalaryManagement.h"
#include "Experience.h"
#include "BasicInfo.h"
#ifndef _BASICINFO_H_
#define _BASICINFO_H_
#endif
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CExperience dialog
CExperience::CExperience(CWnd* pParent /*=NULL*/)
: CDialog(CExperience::IDD, pParent)
{
//{{AFX_DATA_INIT(CExperience)
m_dateFrom = COleDateTime::GetCurrentTime();
m_dateTo = COleDateTime::GetCurrentTime();
m_position = _T("");
m_prover = _T("");
m_remark = _T("");
m_unit = _T("");
m_nID = _T("");
m_name = _T("");
//}}AFX_DATA_INIT
m_adoConn.OnInitADOConn();
}
CExperience::~CExperience()
{
m_adoConn.ExitConnect();
}
void CExperience::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CExperience)
DDX_Control(pDX, IDC_LIST1, m_experience);
DDX_DateTimeCtrl(pDX, IDC_DATETIMEPICKER1, m_dateFrom);
DDX_DateTimeCtrl(pDX, IDC_DATETIMEPICKER2, m_dateTo);
DDX_Text(pDX, IDC_POSITION, m_position);
DDX_Text(pDX, IDC_PROVER, m_prover);
DDX_Text(pDX, IDC_REMARK, m_remark);
DDX_Text(pDX, IDC_UNIT, m_unit);
DDX_Text(pDX, IDC_STAFFID, m_nID);
DDX_Text(pDX, IDC_NAME, m_name);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CExperience, CDialog)
//{{AFX_MSG_MAP(CExperience)
ON_BN_CLICKED(IDC_ADDINFO, OnAddinfo)
ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST1, OnItemchangedList)
ON_BN_CLICKED(IDC_DELETE, OnDelete)
ON_NOTIFY(NM_CLICK, IDC_LIST1, OnClickList)
ON_WM_SHOWWINDOW()
ON_EN_KILLFOCUS(IDC_STAFFID, OnKillfocusStaffid)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CExperience message handlers
BOOL CExperience::OnInitDialog()
{
CDialog::OnInitDialog();
//设置列表控件的风格并初始化各列
CString colTitle[]={"员工ID","从何年何月","至何年何月","所在院校/单位","职务","证明人","备注"};
UINT width[]={100,200,200,200,50,100,200};//设置各列的宽度
m_personInfo.InitListCtrl(m_experience,colTitle,width,7);
LoadData();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
/****************************
函数类型:消息响应函数
功能描述:添加新的个人经历记录
****************************/
void CExperience::OnAddinfo()
{
UpdateData();
if(m_nID=="")
{
AfxMessageBox("员工ID不能为空!");
return;
}
//主键属性列
Prop main[2];
main[0].name="员工ID";
main[0].value=m_nID;
main[1].name="开始时间";
main[1].value=m_dateFrom.Format("%Y-%#m-%#d");
//非主键属性
Prop simple[5];
simple[0].name="结束时间";
simple[1].name="所在单位/院校";
simple[2].name="职务";
simple[3].name="证明人";
simple[4].name="备注";
simple[0].value=m_dateTo.Format("%Y-%#m-%#d");
simple[1].value=m_unit;
simple[2].value=m_position;
simple[3].value=m_prover;
simple[4].value=m_remark;
m_personInfo.SavePersonData("Experience",main,2,simple,5);
//将更新后的数据显示到列表控件中
LoadData();
//清空各编辑框中的内容
m_nID="";
m_unit="";
m_position="";
m_prover="";
m_remark="";
UpdateData(FALSE);
}
/*********************
函数类型:消息响应函数
功能描述:退出
*********************/
void CExperience::OnCancel()
{
((CDialog*)this->GetParent()->GetOwner())->EndDialog(IDCANCEL);
CDialog::OnCancel();
}
/*******************************
函数类型:事件响应函数
功能描述:鼠标点击列表控件的响应
*******************************/
void CExperience::OnItemchangedList(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
UpdateData();
//获得鼠标点击的行号
int nItem=pNMListView->iItem;
m_CurrentSelect=nItem;
//将对应行中各列的数据反馈到编辑框和时间控件上
CString dateFrom,dateTo;
m_nID=m_experience.GetItemText(nItem,0);
dateFrom=m_experience.GetItemText(nItem,1);
dateTo=m_experience.GetItemText(nItem,2);
m_unit=m_experience.GetItemText(nItem,3);
m_position=m_experience.GetItemText(nItem,4);
m_prover=m_experience.GetItemText(nItem,5);
m_remark=m_experience.GetItemText(nItem,6);
m_dateFrom.ParseDateTime(dateFrom);
m_dateTo.ParseDateTime(dateTo);
UpdateData(FALSE);
*pResult = 0;
}
/*****************************************
函数类型:自定义函数
功能描述:将数据库中的数据显示到列表控件中
*****************************************/
void CExperience::LoadData()
{
CString str[]={"员工ID","开始时间","结束时间","所在单位/院校","职务","证明人","备注"};
m_personInfo.LoadData(m_experience,str,7,"Experience");
}
/*********************
函数类型:事件响应函数
功能描述:删除记录
*********************/
void CExperience::OnDelete()
{
UpdateData();
if(0==m_experience.GetSelectedCount()||m_CurrentSelect>=m_experience.GetItemCount())
{
AfxMessageBox("请选择您要删除的记录!");
return;
}
if(IDNO==AfxMessageBox("您确定要删除该记录吗?",MB_YESNO))
return;
try{
//按主键删除,其中数据库中的主键为员工ID和开始时间
CString sql="";
sql.Format("Delete From Experience Where 员工ID='%s' and 开始时间='%s'",
m_nID,m_dateFrom.Format("%Y-%#m-%#d"));
m_adoConn.ExecuteSQL(sql);
}
catch(_com_error e)
{
AfxMessageBox(e.Description());
}
m_experience.DeleteItem(m_CurrentSelect);
}
/***********************************************
函数类型:事件响应函数
功能描述:响应点击列表控件,如果点击行没有记录
则清空编辑框中的所有内容
************************************************/
void CExperience::OnClickList(NMHDR* pNMHDR, LRESULT* pResult)
{
// 单击列表控件时空白行时,清空各输入编辑框中的已有数据
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
int nItem=pNMListView->iItem;
if (nItem==-1)
{
m_nID="";
m_unit="";
m_position="";
m_prover="";
m_remark="";
UpdateData(false);
}
*pResult = 0;
}
void CExperience::OnShowWindow(BOOL bShow, UINT nStatus)
{
CDialog::OnShowWindow(bShow, nStatus);
//当窗口显示时,更新用户ID,显示基本信息中所设置的用户ID
if(bShow)
{
m_nID=CBasicInfo::s_nID;
UpdateData(FALSE);
}
}
void CExperience::OnKillfocusStaffid()
{
UpdateData();
m_personInfo.OnKillfocusEdit(m_nID,m_name);
UpdateData(FALSE);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -