📄 laborageview.cpp
字号:
// LaborageView.cpp : implementation of the CLaborageView class
//
#include "stdafx.h"
#include "Laborage.h"
#include "LaborageDoc.h"
#include "LaborageView.h"
#include "MainFrm.h"
#include "record.h"
#include "manage.h"
#include "node.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CLaborageView
IMPLEMENT_DYNCREATE(CLaborageView, CListView)
BEGIN_MESSAGE_MAP(CLaborageView, CListView)
//{{AFX_MSG_MAP(CLaborageView)
ON_NOTIFY_REFLECT(LVN_COLUMNCLICK, OnColumnclick)
ON_COMMAND(IDM_FIND, OnFind)
ON_COMMAND(IDM_DELETE, OnDelete)
ON_COMMAND(IDM_SHOW, OnShow)
ON_COMMAND(IDM_ADD, OnAdd)
ON_COMMAND(IDM_MODIFY, OnModify)
ON_COMMAND(IDM_MANAGE, OnManage)
//}}AFX_MSG_MAP
ON_MESSAGE(WM_BEGINFIND,OnBeginFind)
// 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()
/////////////////////////////////////////////////////////////////////////////
// CLaborageView construction/destruction
CLaborageView::CLaborageView()
{
// TODO: add construction code here
m_RecordCounts=0;
m_find=new CFind();
}
CLaborageView::~CLaborageView()
{
}
BOOL CLaborageView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CListView::PreCreateWindow(cs);
}
/////////////////////////////////////////////////////////////////////////////
// CLaborageView drawing
void CLaborageView::OnDraw(CDC* pDC)
{
CLaborageDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
}
void CLaborageView::OnInitialUpdate()
{
CListView::OnInitialUpdate();
m_bIsAsc=FALSE;
CListCtrl& theCtrl = GetListCtrl();
theCtrl.ModifyStyle(0,LVS_REPORT);
theCtrl.SetExtendedStyle(LVS_EX_FULLROWSELECT);
theCtrl.SetColumnWidth(0, LVSCW_AUTOSIZE_USEHEADER);
theCtrl.SetColumnWidth(1, LVSCW_AUTOSIZE_USEHEADER);
LV_COLUMN lvColumn;
lvColumn.mask=LVCF_FMT|LVCF_SUBITEM|LVCF_TEXT|LVCF_WIDTH;
lvColumn.fmt=LVCFMT_CENTER;
lvColumn.cx=40;
lvColumn.iSubItem=0;
lvColumn.pszText="编号";
theCtrl.InsertColumn(0,&lvColumn);
lvColumn.cx=60;
lvColumn.iSubItem=1;
lvColumn.pszText="姓名";
theCtrl.InsertColumn(1,&lvColumn);
lvColumn.cx=40;
lvColumn.iSubItem=2;
lvColumn.pszText="性别";
theCtrl.InsertColumn(2,&lvColumn);
lvColumn.cx=40;
lvColumn.iSubItem=3;
lvColumn.pszText="年龄";
theCtrl.InsertColumn(3,&lvColumn);
lvColumn.cx=90;
lvColumn.iSubItem=4;
lvColumn.pszText="电话";
theCtrl.InsertColumn(4,&lvColumn);
lvColumn.cx=70;
lvColumn.iSubItem=5;
lvColumn.pszText="职称";
theCtrl.InsertColumn(5,&lvColumn);
lvColumn.cx=60;
lvColumn.iSubItem=6;
lvColumn.pszText="待遇";
theCtrl.InsertColumn(6,&lvColumn);
lvColumn.cx=50;
lvColumn.iSubItem=7;
lvColumn.pszText="总天数";
theCtrl.InsertColumn(7,&lvColumn);
lvColumn.cx=50;
lvColumn.iSubItem=8;
lvColumn.pszText="起始日期";
theCtrl.InsertColumn(8,&lvColumn);
lvColumn.cx=40;
lvColumn.iSubItem=9;
lvColumn.pszText="请假天数";
theCtrl.InsertColumn(9,&lvColumn);
lvColumn.cx=40;
lvColumn.iSubItem=10;
lvColumn.pszText="有效天数";
theCtrl.InsertColumn(10,&lvColumn);
lvColumn.cx=40;
lvColumn.iSubItem=11;
lvColumn.pszText="发放天数";
theCtrl.InsertColumn(11,&lvColumn);
lvColumn.cx=40;
lvColumn.iSubItem=12;
lvColumn.pszText="剩余天数";
theCtrl.InsertColumn(12,&lvColumn);
lvColumn.cx=70;
lvColumn.iSubItem=13;
lvColumn.pszText="奖罚金额";
theCtrl.InsertColumn(13,&lvColumn);
lvColumn.cx=70;
lvColumn.iSubItem=14;
lvColumn.pszText="总金额";
theCtrl.InsertColumn(14,&lvColumn);
Show();
// TODO: You may populate your ListView with items by directly accessing
// its list control through a call to GetListCtrl().
}
/////////////////////////////////////////////////////////////////////////////
// CLaborageView printing
BOOL CLaborageView::OnPreparePrinting(CPrintInfo* pInfo)
{
// default preparation
return DoPreparePrinting(pInfo);
}
void CLaborageView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add extra initialization before printing
}
void CLaborageView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add cleanup after printing
}
/////////////////////////////////////////////////////////////////////////////
// CLaborageView diagnostics
#ifdef _DEBUG
void CLaborageView::AssertValid() const
{
CListView::AssertValid();
}
void CLaborageView::Dump(CDumpContext& dc) const
{
CListView::Dump(dc);
}
CLaborageDoc* CLaborageView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CLaborageDoc)));
return (CLaborageDoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CLaborageView message handlers
void CLaborageView::Show()
{
static BOOL firstshow=TRUE;
CListCtrl& m_ListCtrlx = GetListCtrl();
m_ListCtrlx.DeleteAllItems();
int i=0;
m_Set.Open();
if(m_Set.IsEOF())
{
m_Set.Close();
return;
}
m_Set.MoveFirst();
do
{
CString s;
s.Format("%d",m_Set.m_column1);
m_ListCtrlx.InsertItem(i,s,0);//职员编号
m_ListCtrlx.SetItemText(i,1,m_Set.m_column2);//姓名
if(m_Set.m_column3==0)
m_ListCtrlx.SetItemText(i,2,"男");//性别
else
m_ListCtrlx.SetItemText(i,2,"女");
s.Format("%d",CTime::GetCurrentTime().GetYear()-m_Set.m_column4);
m_ListCtrlx.SetItemText(i,3,s);//年龄
m_ListCtrlx.SetItemText(i,4,m_Set.m_column5);//电话
m_ListCtrlx.SetItemText(i,5,m_Set.m_column6);//职称
s.Format("%d元/天",m_Set.m_column7);
m_ListCtrlx.SetItemText(i,6,s);//待遇
s.Format("%d-%d-%d",m_Set.m_column8.GetYear(),m_Set.m_column8.GetMonth(),m_Set.m_column8.GetDay());
m_ListCtrlx.SetItemText(i,8,s);//起始日期
s.Format("%.1f",m_Set.m_column9);
m_ListCtrlx.SetItemText(i,9,s);//请假天数
s.Format("%.1f",m_Set.m_column10);
m_ListCtrlx.SetItemText(i,11,s);//发放天数
s.Format("%.1f元",m_Set.m_column11);
m_ListCtrlx.SetItemText(i,13,s);//奖罚金额
CTime time=CTime::GetCurrentTime();
int total=(time.GetYear()-m_Set.m_column8.GetYear())*366+(time.GetMonth()-m_Set.m_column8.GetMonth())*31+time.GetDay()-m_Set.m_column8.GetDay();
s.Format("%d",total);
m_ListCtrlx.SetItemText(i,7,s);//总天数
s.Format("%.1f",total-m_Set.m_column9);
m_ListCtrlx.SetItemText(i,10,s);//有效天数
s.Format("%.1f",total-m_Set.m_column9-m_Set.m_column10);
m_ListCtrlx.SetItemText(i,12,s);//剩余天数
s.Format("%.1f元",(total-m_Set.m_column9-m_Set.m_column10)*m_Set.m_column7+m_Set.m_column11);
m_ListCtrlx.SetItemText(i,14,s);//总金额
i++;
m_Set.MoveNext();
if(firstshow) m_RecordCounts++;
} while(!m_Set.IsEOF());
m_Set.Close();
if(firstshow)
{
firstshow=FALSE;
CMainFrame *frame=(CMainFrame*)AfxGetApp()->m_pMainWnd;
char inf[255];
sprintf(inf,"记录总数: %d ",m_RecordCounts);
frame->m_wndStatusBar.SetPaneText(1,inf);
}
}
void CLaborageView::Sort(BOOL isAsc,int secol)
{
if(m_Set.IsOpen()) m_Set.Close();
m_Set.Open();
CODBCFieldInfo fieldInfo;
m_Set.GetODBCFieldInfo(secol,fieldInfo);
if(isAsc)
{
m_Set.m_strSort=fieldInfo.m_strName+" ASC";
m_bIsAsc=TRUE;
}
else
{
m_Set.m_strSort=fieldInfo.m_strName+" DESC";
m_bIsAsc=FALSE;
}
m_Set.Requery();
m_Set.Close();
}
void CLaborageView::OnColumnclick(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
// TODO: Add your control notification handler code here
int k= pNMListView->iSubItem;
switch(k)
{
case 14:k=-1;break;
case 13:k=10;break;
case 12:k=-1;break;
case 11:k=9;break;
case 10:k=-1;break;
case 9:k=8;break;
case 8:k=7;break;
case 7:k=-1;break;
default:break;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -