studentlistctrl.cpp

来自「课程设计的简单Access学生数据库系统」· C++ 代码 · 共 179 行

CPP
179
字号
// StudentListCtrl.cpp : implementation file
//

#include "stdafx.h"
#include "sm.h"
#include "smdlg.h"
#include "StudentListCtrl.h"
#include "student.h"
#include "studentdlg.h"
#include "studentlist.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CStudentListCtrl

//##ModelId=40A481F20280
CStudentListCtrl::CStudentListCtrl()
{
}

//##ModelId=40A481F20290
CStudentListCtrl::~CStudentListCtrl()
{
}


BEGIN_MESSAGE_MAP(CStudentListCtrl, CListCtrl)
	//{{AFX_MSG_MAP(CStudentListCtrl)
	ON_NOTIFY_REFLECT(NM_DBLCLK, OnDblclk)
	ON_NOTIFY_REFLECT(NM_RDBLCLK, OnRdblclk)
	ON_NOTIFY_REFLECT(NM_RCLICK, OnRclick)
	ON_COMMAND(ID_POP_STU_DELETE, OnPopStuDelete)
	ON_COMMAND(ID_POP_STU_VIEW, OnPopStuView)
	ON_COMMAND(ID_POP_STU_NEW, OnPopStuNew)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CStudentListCtrl message handlers

//##ModelId=40A481F20292
void CStudentListCtrl::OnDblclk(NMHDR* pNMHDR, LRESULT* pResult) 
{
/*	StudentList *pList = ((CSMDlg*)AfxGetMainWnd())->pList;
	UnitClassTree *pUnitClassTree = ((CSMDlg*)AfxGetMainWnd())->pUnitClassTree;
	try
	{
		if(pList->IsSelected())
		{
			int id;
			if(pUnitClassTree->GetSelectType()==1)
				id = pUnitClassTree->GetSelectClass().ID;
			CStudentDlg dlg(&pList->GetSelectStudent());
			if(dlg.DoModal())
				pList->Load(id);
		}
	}
	catch(CException *e)
	{
		DisplayException(e);
	}*/
	OnPopStuView();
	
	*pResult = 0;
}

//##ModelId=40A481F202A0
void CStudentListCtrl::OnRdblclk(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	
	*pResult = 0;
}

//##ModelId=40A481F202AF
void CStudentListCtrl::OnRclick(NMHDR* pNMHDR, LRESULT* pResult) 
{
	CMenu menu; 
 	CPoint p;
 	GetCursorPos(&p);
	m_MousePoint = p;
	ScreenToClient(&m_MousePoint);
 	menu.LoadMenu(IDR_POP_STU_MENU);
 	menu.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTBUTTON|TPM_LEFTALIGN, p.x, p.y,this);
	*pResult = 0;
}

//##ModelId=40A481F202BF
void CStudentListCtrl::OnPopStuDelete() 
{
	StudentList *pList = ((CSMDlg*)AfxGetMainWnd())->pList;
	UnitClassTree *pUnitClassTree = ((CSMDlg*)AfxGetMainWnd())->pUnitClassTree;
	try
	{
		if(pList->IsSelected())
		{
			int id ;
			if(pUnitClassTree->GetSelectType()==1)
			{
				CDaoTableDef td(&theDatabase);
				td.Open("student");
				CDaoRecordset RS;
				RS.Open(&td);
				id = pUnitClassTree->GetSelectClass().ID;
				long stu_sel = pList->GetSelected()-1;
				pList->GetSelectStudent().Delete(&RS);
				pList->Load(id);
				pList->SetSelected(stu_sel);
				RS.Close();
				td.Close();
			}
		}
	}
	catch(CException *e)
	{
		DisplayException(e);
	}
	
}

//##ModelId=40A481F202C1
void CStudentListCtrl::OnPopStuView() 
{
	StudentList *pList = ((CSMDlg*)AfxGetMainWnd())->pList;
	UnitClassTree *pUnitClassTree = ((CSMDlg*)AfxGetMainWnd())->pUnitClassTree;
	try
	{
		if(pList->IsSelected())
		{
			int cid, sid;
			if(pUnitClassTree->GetSelectType()==1)
				cid = pUnitClassTree->GetSelectClass().ID;
			CStudentDlg dlg(&pList->GetSelectStudent());
			if(sid=dlg.DoModal())
			{
				pList->Load(cid);
				pList->SetSelectStudent(sid);
			}
		}
	}
	catch(CException *e)
	{
		DisplayException(e);
	}
	
}

//##ModelId=40A481F202CE
void CStudentListCtrl::OnPopStuNew() 
{
	StudentList *pList = ((CSMDlg*)AfxGetMainWnd())->pList;
	UnitClassTree *pUnitClassTree = ((CSMDlg*)AfxGetMainWnd())->pUnitClassTree;
	if(pUnitClassTree->GetSelectType()!=1)
	{
		AfxMessageBox("请选择一个班级用以添加学生记录!!");
		return;
	}
	try
	{
		long class_id = pUnitClassTree->GetSelectClass().ID, id;
		CStudentDlg dlg;
		if(id=dlg.DoModal())
		{
			pList->Load(class_id);
			pList->SetSelectStudent(id);
		}
	}
	catch(CException *e)
	{
		DisplayException(e);
	}
	
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?