📄 vv.cpp
字号:
// VV.cpp : implementation file
//
#include "stdafx.h"
#include "ooo.h"
#include "VV.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CVV
IMPLEMENT_DYNCREATE(CVV, CListView)
CVV::CVV()
{high1=200;high2=30;row=30;page=0;
}
CVV::~CVV()
{COooApp*pp=(COooApp*)::AfxGetApp();
pp->a=0;
}
BEGIN_MESSAGE_MAP(CVV, CListView)
//{{AFX_MSG_MAP(CVV)
ON_COMMAND(ID_MENUITEM32779, OnMenuitem32779)
ON_COMMAND(ID_MENUITEM32780, OnMenuitem32780)
ON_COMMAND(ID_MENUITEM32781, OnMenuitem32781)
ON_COMMAND(ID_MENUITEM32787, OnMenuitem32787)
ON_COMMAND(ID_FILE_bb, CListView::OnFilePrint)
ON_COMMAND(ID_FILE_aa, CListView::OnFilePrintPreview)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CVV drawing
void CVV::OnDraw(CDC* pDC)
{
COooDoc* pDoc = GetDocument();
// TODO: add draw code here
}
/////////////////////////////////////////////////////////////////////////////
// CVV diagnostics
#ifdef _DEBUG
void CVV::AssertValid() const
{
CListView::AssertValid();
}
void CVV::Dump(CDumpContext& dc) const
{
CListView::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CVV message handlers
void CVV::OnInitialUpdate()
{
CListView::OnInitialUpdate();
CListCtrl&m_list=GetListCtrl();
COooApp*pp=(COooApp*)::AfxGetApp();
pp->a=1;
m_list.InsertColumn(0,"姓名",LVCFMT_LEFT,100);
m_list.InsertColumn(1,"缺勤",LVCFMT_LEFT,100);
m_list.InsertColumn(2,"日期",LVCFMT_LEFT,100);
m_list.SetBkColor(RGB(122,200,25));
m_list.SetTextBkColor(RGB(222,100,125));
m_list.ModifyStyle(LVS_TYPEMASK,LVS_REPORT);
m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
list();
}
void CVV::OnMenuitem32779()
{COooDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
CListCtrl&m_list=GetListCtrl();
COooApp*pp=(COooApp*)::AfxGetApp();
if(pp->e==0&&pp->c==0&&pp->d==0){
CB *prs;
prs=new CB(pDoc->m_pDB);
prs->Open(dbOpenDynaset,prs->GetDefaultSQL(),0);
CString str;
CQ m_cq;
m_cq.m_date.GetCurrentTime();
if(m_cq.DoModal()==IDOK){
if(m_cq.name==""){MessageBox("请选择缺勤学生");return;}
if(m_cq.aa==0){MessageBox("必须选择缺勤种类");return;}
prs->AddNew();
prs->m_column1=m_cq.name;
if(m_cq.aa==1){ prs->m_column2=1;}
if(m_cq.aa==2){prs->m_column2=2;}
if(m_cq.aa==3){prs->m_column2=3;}
prs->m_column3=m_cq.m_date.GetTime();
prs->Update();
}
list();}
else
AfxMessageBox("请关闭报表窗口");return;
}
void CVV::OnMenuitem32780()
{COooDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
CListCtrl&m_list=GetListCtrl();
COooApp*pp=(COooApp*)::AfxGetApp();
if(pp->e==0&&pp->c==0&&pp->d==0){
CB *prs;
prs=new CB(pDoc->m_pDB);
prs->Open(dbOpenDynaset,prs->GetDefaultSQL(),0);
CQ m_cb;
int in=m_list.GetNextItem(-1,LVNI_SELECTED);
if(in==-1){AfxMessageBox("请选择要更改的记录");return;}
CString str;
str=m_list.GetItemText(in,0);
CString ss("姓名=");
ss+="'";
ss+=str;
ss+="'";
prs->m_strFilter=ss;
prs->Requery();
if(m_cb.DoModal()==IDOK){
if(m_cb.name==""){MessageBox("请选择缺勤学生");return;}
if(m_cb.aa==0){MessageBox("必须选择缺勤种类");return;}
prs->Edit();
prs->m_column1=m_cb.name;
if(m_cb.aa==1){ prs->m_column2=1;}
if(m_cb.aa==2){prs->m_column2=2;}
if(m_cb.aa==3){prs->m_column2=3;}
prs->m_column3=m_cb.m_date.GetTime();
prs->Update();}
list();
}
else
AfxMessageBox("请关闭报表窗口");return;
}
void CVV::OnMenuitem32781()
{
COooDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
CListCtrl&m_list=GetListCtrl();
COooApp*pp=(COooApp*)::AfxGetApp();
if(pp->e==0&&pp->c==0&&pp->d==0){
CB *prs;
prs=new CB(pDoc->m_pDB);
prs->Open(dbOpenDynaset,prs->GetDefaultSQL(),0);
int in=m_list.GetNextItem(-1,LVNI_SELECTED);
if(in==-1){AfxMessageBox("请选择要删除的记录");return;}
CString str;
str=m_list.GetItemText(in,0);
if(AfxMessageBox("是否删除:"+str,MB_YESNO)==IDYES){
CString ss("姓名=");
ss+="'";
ss+=str;
ss+="'";
prs->m_strFilter=ss;
prs->Requery();
prs->Delete();}
list();
}
else
AfxMessageBox("请关闭报表窗口");return;
}
void CVV::list()
{ COooDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
CListCtrl&m_list=GetListCtrl();
m_list.DeleteAllItems();
CB *prs;
prs=new CB(pDoc->m_pDB);
prs->Open(dbOpenDynaset,prs->GetDefaultSQL(),0);
int i=0;if(prs->IsBOF()&&prs->IsEOF()){return;}
prs->MoveFirst();
while(!prs->IsEOF()){
m_list.InsertItem(i,prs->m_column1);
if(prs->m_column2==1){ m_list.SetItemText(i,1,"病假");}
if(prs->m_column2==2){ m_list.SetItemText(i,1,"事假");}
if(prs->m_column2==3){ m_list.SetItemText(i,1,"旷课");}
CString oo;
oo=prs->m_column3.Format("%Y-%m-%d");
m_list.SetItemText(i,2,oo);
i++;
prs->MoveNext();}
page=i;
delete prs;
}
COooDoc* CVV::GetDocument()
{ ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(COooDoc)));
return (COooDoc*)m_pDocument;
}
void CVV::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo)
{pDC->SetMapMode(MM_ANISOTROPIC);
CSize size=CSize(800,600);
pDC->SetWindowExt(size);
int a=pDC->GetDeviceCaps(LOGPIXELSX);
int b=pDC->GetDeviceCaps(LOGPIXELSY);
long xx=(long)size.cx*a/96;
long yy=(long)size.cy*b/96;
pDC->SetViewportExt((int)xx,(int)yy);
CListView::OnPrepareDC(pDC, pInfo);
}
void CVV::OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo)
{
CListView::OnBeginPrinting(pDC, pInfo);
}
void CVV::OnEndPrinting(CDC* pDC, CPrintInfo* pInfo)
{
CListView::OnEndPrinting(pDC, pInfo);
}
BOOL CVV::OnPreparePrinting(CPrintInfo* pInfo)
{ return CListView::DoPreparePrinting(pInfo);
}
void CVV::OnPrint(CDC* pDC, CPrintInfo* pInfo)
{COooDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);Invalidate();
COooApp*pp=(COooApp*)::AfxGetApp();
CFont font240,font100,font180,*po;
font240.CreatePointFont(240,"楷体_GB2312",pDC);
po=pDC->SelectObject(&font240);
pDC->TextOut((100+3*high1)/3,20,"上课缺勤表");
font180.CreatePointFont(100,"楷体_GB2312",pDC);
po=pDC->SelectObject(&font180);
pDC->TextOut(50,60,pp->class1);
pDC->TextOut((100+3*high1)/2-100,60,pp->date);
pDC->TextOut((100+3*high1)-100,60,pp->teacher);
font100.CreatePointFont(120,"楷体_GB2312",pDC);
po=pDC->SelectObject(&font100);
for(int i=0;i<row+1;i++){
pDC->MoveTo(50,80+high2*i);
pDC->LineTo(50+3*high1,80+high2*i);
}
for(i=0;i<4;i++){
pDC->MoveTo(50+high1*i,80);
pDC->LineTo(50+high1*i,80+high2*row);
}
CRect rect(50,80,50+high1,80+high2);
pDC->DrawText("姓名",-1,&rect,DT_VCENTER|DT_CENTER|DT_SINGLELINE);
rect.SetRect(50+high1*1,80,50+high1*2,80+high2);
pDC->DrawText("缺勤",-1,&rect,DT_VCENTER|DT_CENTER|DT_SINGLELINE);
rect.SetRect(50+high1*2,80,50+high1*3,80+high2);
pDC->DrawText("日期",-1,&rect,DT_VCENTER|DT_CENTER|DT_SINGLELINE);
int page1=0;
if((page/(row-1))<1){page1=1;}
else{if(page%(row-1)==0){page1=page/(row-1);}
else page1=page/(row-1)+1;}
pInfo->SetMaxPage(page1);
CB *prs;
prs=new CB(pDoc->m_pDB);
prs->Open(dbOpenDynaset,prs->GetDefaultSQL(),0);
if(pInfo->m_nCurPage==1)
{if(prs->GetRecordCount()){ prs->MoveFirst();
for(i=0;i<row-1;i++){
rect.SetRect(50,80+high2*(i+1),50+high1,80+high2*(i+2));
pDC->DrawText(prs->m_column1,-1,&rect,DT_VCENTER|DT_CENTER|DT_SINGLELINE);
if(prs->m_column2==1){
rect.SetRect(50+high1,80+high2*(i+1),50+high1*2,80+high2*(i+2));
pDC->DrawText("病假",-1,&rect,DT_VCENTER|DT_CENTER|DT_SINGLELINE);
}
if(prs->m_column2==2){
rect.SetRect(50+high1,80+high2*(i+1),50+high1*2,80+high2*(i+2));
pDC->DrawText("事假",-1,&rect,DT_VCENTER|DT_CENTER|DT_SINGLELINE);
}
if(prs->m_column2==3){
rect.SetRect(50+high1,80+high2*(i+1),50+high1*2,80+high2*(i+2));
pDC->DrawText("旷课",-1,&rect,DT_VCENTER|DT_CENTER|DT_SINGLELINE);
}
CString str;
str=prs->m_column3.Format("%Y-%m-%d");
rect.SetRect(50+high1*2,80+high2*(i+1),50+high1*3,80+high2*(i+2));
pDC->DrawText(str,-1,&rect,DT_VCENTER|DT_CENTER|DT_SINGLELINE);
if( prs->IsEOF()){return;}
else
prs->MoveNext();
}}}
if(pInfo->m_nCurPage==2)
{prs->Move(row-1);
for(i=0;i<row-1;i++){
rect.SetRect(50,80+high2*(i+1),50+high1,80+high2*(i+2));
pDC->DrawText( prs->m_column1,-1,&rect,DT_VCENTER|DT_CENTER|DT_SINGLELINE);
if(prs->m_column2==1){
rect.SetRect(50+high1,80+high2*(i+1),50+high1*2,80+high2*(i+2));
pDC->DrawText("病假",-1,&rect,DT_VCENTER|DT_CENTER|DT_SINGLELINE);
}
if(prs->m_column2==2){
rect.SetRect(50+high1,80+high2*(i+1),50+high1*2,80+high2*(i+2));
pDC->DrawText("事假",-1,&rect,DT_VCENTER|DT_CENTER|DT_SINGLELINE);
}
if(prs->m_column2==3){
rect.SetRect(50+high1,80+high2*(i+1),50+high1*2,80+high2*(i+2));
pDC->DrawText("旷课",-1,&rect,DT_VCENTER|DT_CENTER|DT_SINGLELINE);
}
CString str;
str=prs->m_column3.Format("%Y-%m-%d");
rect.SetRect(50+high1*2,80+high2*(i+1),50+high1*3,80+high2*(i+2));
pDC->DrawText(str,-1,&rect,DT_VCENTER|DT_CENTER|DT_SINGLELINE);
if( prs->IsEOF()){return;}else
prs->MoveNext();
}}
font100.DeleteObject();
font240.DeleteObject();
font180.DeleteObject();
CListView::OnPrint(pDC, pInfo);
}
void CVV::OnMenuitem32787()
{
COooApp*pp=(COooApp*)::AfxGetApp();
CH m_ch;m_ch.m_high1=200;m_ch.m_high2=30;m_ch.m_row=30;
if(m_ch.DoModal()==IDOK){
high1=m_ch.m_high1;
high2=m_ch.m_high2;
row=m_ch.m_row;Invalidate();
pp->class1=m_ch.m_class;
pp->date=m_ch.m_date;
pp->teacher=m_ch.m_teacher;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -