📄 nurseview.cpp
字号:
// NurseView.cpp : implementation of the CNurseView class
//
#include "stdafx.h"
#include "Nurse.h"
#include "NurseDoc.h"
#include "NurseView.h"
#include "InputDlg.h"
#include "WarnDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
BOOL g_bUsed = FALSE; // 判断是不是第一次进入,初始为否
/////////////////////////////////////////////////////////////////////////////
// CNurseView
IMPLEMENT_DYNCREATE(CNurseView, CListView)
BEGIN_MESSAGE_MAP(CNurseView, CListView)
//{{AFX_MSG_MAP(CNurseView)
ON_COMMAND(ID_OPERATION_MODIFY, OnOperationModify)
ON_COMMAND(ID_OPERATION_DELETE, OnOperationDelete)
//}}AFX_MSG_MAP
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, CListView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CListView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CListView::OnFilePrintPreview)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CNurseView construction/destruction
CNurseView::CNurseView()
{
// TODO: add construction code here
}
CNurseView::~CNurseView()
{
}
BOOL CNurseView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CListView::PreCreateWindow(cs);
}
/////////////////////////////////////////////////////////////////////////////
// CNurseView drawing
void CNurseView::OnDraw(CDC* pDC)
{
CNurseDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
}
void CNurseView::OnInitialUpdate()
{
CListView::OnInitialUpdate();
// TODO: You may populate your ListView with items by directly accessing
// its list control through a call to GetListCtrl().
CNurseDoc *pDoc = GetDocument(); //获得文档指针,操纵数据
if(!g_bUsed) // 如果第一次建立视图,绘制窗口
{
// 修改样式
GetListCtrl().ModifyStyle(0,LVS_REPORT|LVS_SHOWSELALWAYS
|LVS_SORTASCENDING|LVS_SINGLESEL);
// 设置扩展风格
GetListCtrl().SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE,0,
LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT);
// 获得字符像素值
CDC *pDC = GetDC();
TEXTMETRIC tm;
pDC->GetTextMetrics(&tm);
GetListCtrl().InsertColumn(0,"职业证书编号",LVCFMT_LEFT,13*tm.tmAveCharWidth,0);
GetListCtrl().InsertColumn(1,"姓名",LVCFMT_LEFT,10*tm.tmAveCharWidth,1);
GetListCtrl().InsertColumn(2,"性别",LVCFMT_LEFT,8*tm.tmAveCharWidth,1);
GetListCtrl().InsertColumn(3,"出生年月",LVCFMT_LEFT,15*tm.tmAveCharWidth,1);
GetListCtrl().InsertColumn(4,"护理级别",LVCFMT_LEFT,15*tm.tmAveCharWidth,1);
GetListCtrl().InsertColumn(5,"最高学历",LVCFMT_LEFT,15*tm.tmAveCharWidth,1);
GetListCtrl().InsertColumn(6,"婚姻状况",LVCFMT_LEFT,15*tm.tmAveCharWidth,1);
GetListCtrl().InsertColumn(7,"理论考核",LVCFMT_LEFT,10*tm.tmAveCharWidth,0);
GetListCtrl().InsertColumn(8,"操作考核",LVCFMT_LEFT,10*tm.tmAveCharWidth,1);
GetListCtrl().InsertColumn(9,"轮转时间",LVCFMT_LEFT,15*tm.tmAveCharWidth,1);
GetListCtrl().InsertColumn(10,"科室",LVCFMT_LEFT,15*tm.tmAveCharWidth,1);
GetListCtrl().InsertColumn(11,"病假",LVCFMT_LEFT,15*tm.tmAveCharWidth,1);
GetListCtrl().InsertColumn(12,"事假",LVCFMT_LEFT,15*tm.tmAveCharWidth,1);
GetListCtrl().InsertColumn(13,"备注",LVCFMT_LEFT,15*tm.tmAveCharWidth,0);
}
else
{
// GetListCtrl().DeleteAllItems();
}
g_bUsed = TRUE;
}
void CNurseView::OnUpdate(CView *pSender,LPARAM lHint,CObject *pHint)
{
CNurseDoc *pDoc = GetDocument(); //获得文档指针,操纵数据
// 删除所有项目
GetListCtrl().DeleteAllItems();
// 获取头指针
CListItem *ptr = pDoc->staffInfo.m_staffList.m_pHead;
while(ptr)
{
int i = GetListCtrl().InsertItem(0,ptr->m_szWorkerID);
GetListCtrl().SetItemText(i,1,ptr->m_szName);
GetListCtrl().SetItemText(i,2,ptr->m_szSex);
GetListCtrl().SetItemText(i,3,ptr->m_date);
GetListCtrl().SetItemText(i,4,ptr->m_szTechnical);
GetListCtrl().SetItemText(i,5,ptr->m_szSchool);
GetListCtrl().SetItemText(i,6,ptr->m_szMarriage);
GetListCtrl().SetItemText(i,7,ptr->m_szlilun);
GetListCtrl().SetItemText(i,8,ptr->m_szcaozuo);
GetListCtrl().SetItemText(i,9,ptr->m_date2);
GetListCtrl().SetItemText(i,10,ptr->m_szkeshi);
GetListCtrl().SetItemText(i,11,ptr->m_szshijia);
GetListCtrl().SetItemText(i,12,ptr->m_szbingjia);
GetListCtrl().SetItemText(i,13,ptr->m_szbeizhu);
ptr = ptr->m_pNext;
}
}
/////////////////////////////////////////////////////////////////////////////
// CNurseView printing
BOOL CNurseView::OnPreparePrinting(CPrintInfo* pInfo)
{
// default preparation
return DoPreparePrinting(pInfo);
}
void CNurseView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add extra initialization before printing
}
void CNurseView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add cleanup after printing
}
/////////////////////////////////////////////////////////////////////////////
// CNurseView diagnostics
#ifdef _DEBUG
void CNurseView::AssertValid() const
{
CListView::AssertValid();
}
void CNurseView::Dump(CDumpContext& dc) const
{
CListView::Dump(dc);
}
CNurseDoc* CNurseView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CNurseDoc)));
return (CNurseDoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CNurseView message handlers
void CNurseView::OnOperationModify()
{
// TODO: Add your command handler code here
CNurseDoc* pDoc = GetDocument();
if(!GetListCtrl().GetSelectedCount())
{
MessageBox("请选择一项进行修改!");
}
else
{
CInputDlg inputDlg;
// 获得该项的基本信息
// 取得选中的纪录
int i = -1;
i = GetListCtrl().GetNextItem(-1,LVIS_SELECTED);
// 取得选中纪录的编号
CString id = GetListCtrl().GetItemText(i,0);
inputDlg.m_ID = id;
//通过编号查找护理信息,返回指向选中纪录的指针
CListItem *ptr = pDoc->staffInfo.m_staffList.findByID(id);
//取得选中纪录的护士具体信息
inputDlg.m_name = ptr->m_szName; // 姓名
// 出生年月日
inputDlg.m_sYear = ptr->m_date.Mid(0,4);
inputDlg.m_sMonth = ptr->m_date.Mid(3,2);
inputDlg.m_sDay = ptr->m_date.Mid(5,2);
inputDlg.m_sTechnical =ptr->m_szTechnical; // 护理级别
inputDlg.m_sSchool = ptr->m_szSchool; // 最高学历
if(inputDlg.DoModal() == IDOK)
{
ptr->m_szWorkerID = inputDlg.m_ID; // 获得护士编号
ptr->m_szName = inputDlg.m_name; // 获得护士姓名
ptr->m_szSex = inputDlg.m_sSex; // 获得护士性别
// 获得护士出生年月
CString sYear = inputDlg.m_sYear;
CString sMonth = inputDlg.m_sMonth;
CString sDay = inputDlg.m_sDay;
ptr->m_date = sYear + sMonth + sDay;
// 获得护士护理级别
ptr->m_szTechnical = inputDlg.m_sTechnical;
// 获得护士最高学历
ptr->m_szSchool = inputDlg.m_sSchool;
// 获得护士婚姻状况
ptr->m_szMarriage = inputDlg.m_sMarriage;
//获得理论成绩
ptr->m_szlilun=inputDlg.m_lilun;
//获得操作成绩
ptr->m_szcaozuo=inputDlg.m_caozuo;
//获得病假天数
ptr->m_szbingjia=inputDlg.m_bingjia;
//获得事假天数
ptr->m_szshijia=inputDlg.m_shijia;
// 获得备注
ptr->m_szbeizhu=inputDlg.m_beizhu;
//获得科室
ptr->m_szkeshi=inputDlg.m_keshi;
//获得到达该科室时间
CString syear2 = inputDlg.m_syear2;
CString smonth2 = inputDlg.m_smonth2;
CString sday2 = inputDlg.m_sday2;
ptr->m_date2 = syear2 + smonth2 + sday2;
pDoc->UpdateAllViews(NULL);// 更新视图
}
}
}
void CNurseView::OnOperationDelete()
{
// TODO: Add your command handler code here
CNurseDoc* pDoc = GetDocument();
if(!GetListCtrl().GetSelectedCount())
{
MessageBox("请选择一项进行删除!");
}
else
{
CWarnDlg warnDlg; // 提示是否真的要删除
warnDlg.m_sWarnText = "你真得要删除这项纪录吗?";
if(warnDlg.DoModal() == IDOK)
{
// 获得所选择护理信息的编号
int i = -1;
i = GetListCtrl().GetNextItem(-1,LVIS_SELECTED);
CString id = GetListCtrl().GetItemText(i,0);
// 根据编号删除信息
pDoc->staffInfo.m_staffList.removeByID(id);
pDoc->UpdateAllViews(NULL); // 更新视图
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -