📄 familymember.cpp
字号:
//
//
/*************************************
文件名:FamilyMember.cpp
文件类型:implementation file
功能描述:对员工家庭成员的信息进行录入
创建人:张国
版本号:1.0
**************************************/
#include "stdafx.h"
#include "salarymanagement.h"
#include "FamilyMember.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#include "BasicInfo.h"
#ifndef _BASICINFO_H_
#define _BASICINFO_H_
#endif
/////////////////////////////////////////////////////////////////////////////
// CFamilyMember dialog
CFamilyMember::CFamilyMember(CWnd* pParent /*=NULL*/)
: CDialog(CFamilyMember::IDD, pParent)
{
//{{AFX_DATA_INIT(CFamilyMember)
m_name = _T("");
m_department = _T("");
m_relation = _T("");
m_telephone = _T("");
m_position = _T("");
m_nID = _T("");
m_employeeName = _T("");
//}}AFX_DATA_INIT
m_ado.OnInitADOConn();
m_CurrentSelect=-1;
char* str[]={"员工ID","姓名","与本人关系","工作单位","职务","政治面貌","联系电话"};
for(int i=0;i<7;i++)
m_propTitle[i]=str[i];
}
CFamilyMember::~CFamilyMember()
{
m_ado.ExitConnect();
}
void CFamilyMember::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CFamilyMember)
DDX_Control(pDX, IDC_COMBO1, m_political);
DDX_Control(pDX, IDC_LIST1, m_familyMember);
DDX_Text(pDX, IDC_EDIT1, m_name);
DDX_Text(pDX, IDC_DEPARTMENT, m_department);
DDX_Text(pDX, IDC_RELATION, m_relation);
DDX_Text(pDX, IDC_TELEPHONE, m_telephone);
DDX_Text(pDX, IDC_POSITION, m_position);
DDX_Text(pDX, IDC_NID, m_nID);
DDX_Text(pDX, IDC_NAME, m_employeeName);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CFamilyMember, CDialog)
//{{AFX_MSG_MAP(CFamilyMember)
ON_BN_CLICKED(IDC_SAVE, OnSave)
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_NID, OnKillfocusNid)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CFamilyMember message handlers
BOOL CFamilyMember::OnInitDialog()
{
CDialog::OnInitDialog();
//设置列表控件的风格并初始化各列
UINT width[]={100,100,100,200,100,100,100};//列表控件中各列的宽度
m_personInfo.InitListCtrl(m_familyMember,m_propTitle,width,7);
LoadData();
m_political.AddString("党员");
m_political.AddString("团员");
m_political.AddString("群众");
m_political.SetCurSel(0);
m_CurrentRow=0;
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CFamilyMember::OnCancel()
{
((CDialog*)this->GetParent()->GetOwner())->EndDialog(IDCANCEL);
CDialog::OnCancel();
}
/***************************************
函数类型:事件响应函数
功能描述:响应点击“保存”按钮的消息,
对输入的员工家庭成员信息记录
***************************************/
void CFamilyMember::OnSave()
{
UpdateData();
if(m_nID==""||m_relation=="")
{
AfxMessageBox("用户ID或和本人关系不能为空");
return;
}
int index=m_political.GetCurSel();
if(index<0)
{
MessageBox("请选择政治面貌,或自己填写");
return;
}
CString political="";
m_political.GetLBText(index,political);
//主键属性结构体
Prop main[2];
main[0].name="员工ID";
main[0].value=m_nID;
main[1].name="与本人关系";
main[1].value=m_relation;
//非主键属性结构体
Prop simple[5];
char* str[]={"姓名","工作单位","职务","政治面貌","联系电话"};
for(int i=0;i<5;i++)
simple[i].name=str[i];
simple[0].value=m_name;
simple[1].value=m_department;
simple[2].value=m_position;
simple[3].value=political;
simple[4].value=m_telephone;
//保存记录
m_personInfo.SavePersonData("FamilyMember",main,2,simple,5);
LoadData();
//清除编辑框中的数据
m_nID="";
m_name="";
m_relation="";
m_department="";
m_position="";
m_telephone="";
UpdateData(FALSE);
m_CurrentRow++;
}
/***************************************************
函数类型:事件响应函数
功能描述:响应鼠标点击列表控件件后的操作
将点击行的数据反馈到编辑框和组合框控件上
***************************************************/
void CFamilyMember::OnItemchangedList(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
//获得鼠标点击的行号
int nItem=pNMListView->iItem;
m_CurrentSelect=nItem;
//将对应行中各列的数据反馈到编辑框和组合框控件上
CString political;
m_nID=m_familyMember.GetItemText(nItem,0);
m_name=m_familyMember.GetItemText(nItem,1);
m_relation=m_familyMember.GetItemText(nItem,2);
m_department=m_familyMember.GetItemText(nItem,3);
m_position=m_familyMember.GetItemText(nItem,4);
political=m_familyMember.GetItemText(nItem,5);
m_telephone=m_familyMember.GetItemText(nItem,6);
int index=m_political.FindString(0,political);
m_political.SetCurSel(index);
UpdateData(FALSE);
*pResult = 0;
}
/*******************************************
函数类型:自定义函数
功能描述:将数据库中的数据显示到列表控件中
*******************************************/
void CFamilyMember::LoadData()
{
m_personInfo.LoadData(m_familyMember,m_propTitle,7,"FamilyMember");
}
/***********************************
函数类型:事件响应函数
功能描述:响应鼠标点击“删除”按钮
删除对应记录
***********************************/
void CFamilyMember::OnDelete()
{
UpdateData();
if(m_familyMember.GetSelectedCount()==0||m_CurrentSelect>=m_familyMember.GetItemCount())
{
AfxMessageBox("请选择您要删除的记录!");
return;
}
if(IDNO==AfxMessageBox("您确定要删除该记录吗?",MB_YESNO))
return;
try{
//按主键删除,其中数据库中的主键为员工ID和与本人关系
CString sql="";
sql.Format("Delete From FamilyMember Where 员工ID='%s' and 与本人关系='%s'",m_nID,m_relation);
m_ado.ExecuteSQL(sql);
m_familyMember.DeleteItem(m_CurrentSelect);
}
catch(_com_error e)
{
AfxMessageBox(e.Description());
}
}
/***************************************************
函数类型:事件响应函数
功能描述:响应鼠标点击列表控件件后的操作
如果点击行没有记录,则清空编辑框中的数据
***************************************************/
void CFamilyMember::OnClickList(NMHDR* pNMHDR, LRESULT* pResult)
{
// 单击列表控件时空白行时,清空各输入编辑框中的已有数据
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
//获得鼠标点击的行号
int nItem=pNMListView->iItem;
if (nItem==-1)
{
m_nID="";
m_name="";
m_relation="";
m_department="";
m_position="";
m_telephone="";
UpdateData(false);
}
*pResult = 0;
}
void CFamilyMember::OnShowWindow(BOOL bShow, UINT nStatus)
{
CDialog::OnShowWindow(bShow, nStatus);
if(bShow)
{
m_nID=CBasicInfo::s_nID;
UpdateData(FALSE);
}
}
void CFamilyMember::OnKillfocusNid()
{
UpdateData();
m_personInfo.OnKillfocusEdit(m_nID,m_employeeName);
UpdateData(FALSE);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -