📄 studentlist.cpp
字号:
// StudentList.cpp: implementation of the StudentList class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "SM.h"
#include "student.h"
#include "StudentList.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
//##ModelId=40A481F2035B
StudentList::StudentList(CListCtrl * plist):BaseList(plist)
{
ASSERT(plist);
pList = plist;
pList->SetExtendedStyle(pList->GetExtendedStyle() | LVS_EX_FULLROWSELECT);
}
//##ModelId=40A481F2035D
StudentList::~StudentList()
{
}
//##ModelId=40A481F2034D
void StudentList::Load(long class_id)
{
LoadData(class_id);
CString s;
vector<Student>::iterator iter;
long i = 0;
for(iter=Students.begin(), i=0; iter!=Students.end(); iter++, i++)
{
s.Format("%3d", iter->Num);
pList->InsertItem(i, s);
pList->SetItem(i, 1, LVIF_TEXT, iter->Name, 0, 0, 0, 0);
pList->SetItem(i, 2, LVIF_TEXT, iter->Sex?_T("男"):_T("女"), 0, 0, 0, 0);
pList->SetItem(i, 3, LVIF_TEXT, iter->Birthday.Format("%Y-%m-%d"), 0, 0, 0, 0);
pList->SetItem(i, 4, LVIF_TEXT, iter->EMail, 0, 0, 0, 0);
pList->SetItemData(i, iter->ID);
}
pList->SetItemState(0, LVIS_SELECTED|LVIS_FOCUSED, LVIS_SELECTED|LVIS_FOCUSED);
}
//##ModelId=40A481F2034C
void StudentList::Clear()
{
pList->DeleteAllItems();
Students.clear();
}
//##ModelId=40A481F20310
void StudentList::Init()
{
pList->InsertColumn(0, _T("学号"), LVCFMT_LEFT, 60);
pList->InsertColumn(1, _T("姓名"), LVCFMT_LEFT, 90);
pList->InsertColumn(2, _T("性别"), LVCFMT_LEFT, 60);
pList->InsertColumn(3, _T("出生年月"), LVCFMT_LEFT, 88);
pList->InsertColumn(4, _T("EMail"), LVCFMT_LEFT, 150);
}
//##ModelId=40A481F2030F
bool StudentList::IsSelected()
{
POSITION pos;
pos = pList->GetFirstSelectedItemPosition();
return pos!=NULL;
}
//##ModelId=40A481F2030E
Student& StudentList::GetSelectStudent()
{
ASSERT(IsSelected()==true);
vector<Student>::iterator iter;
if(IsSelected())
{
long id = GetSelectedData();
for(iter=Students.begin(); iter!=Students.end(); iter++)
if((*iter).ID==id)
return *iter;
}
return *iter;
}
//##ModelId=40A481F2030D
void StudentList::InitForUpDown()
{
pList->InsertColumn(0, _T("学号"), LVCFMT_LEFT, 37);
pList->InsertColumn(1, _T("姓名"), LVCFMT_LEFT, 48);
pList->InsertColumn(2, _T("性别"), LVCFMT_LEFT, 37);
}
//##ModelId=40A481F202FF
void StudentList::LoadForUpdown(long class_id)
{
LoadData(class_id);
CString s;
vector<Student>::iterator iter;
long i = 0;
for(iter=Students.begin(), i=0; iter!=Students.end(); iter++, i++)
{
s.Format("%3d", iter->Num);
pList->InsertItem(i, s);
pList->SetItem(i, 1, LVIF_TEXT, iter->Name, 0, 0, 0, 0);
pList->SetItem(i, 2, LVIF_TEXT, iter->Sex?_T("男"):_T("女"), 0, 0, 0, 0);
pList->SetItemData(i, iter->ID);
}
pList->SetItemState(0, LVIS_SELECTED|LVIS_FOCUSED, LVIS_SELECTED|LVIS_FOCUSED);
}
//##ModelId=40A481F202FD
void StudentList::LoadData(long class_id)
{
Clear();
CDaoTableDef TD(&theDatabase);
TD.Open("student");
CDaoRecordset RS;
RS.Open(&TD);
RS.SetCurrentIndex("Class_ID");
if(RS.Seek("=", &COleVariant(class_id)))
{
while(!RS.IsEOF())
{
if(RS.GetFieldValue("Class_ID").lVal!=class_id)
break;
Students.push_back(Student(RS.GetFieldValue("ID").lVal,
V_BSTRT(&RS.GetFieldValue("name")),
RS.GetFieldValue("sex").boolVal==-1,
RS.GetFieldValue("birthday"),
RS.GetFieldValue("class_id").lVal,
RS.GetFieldValue("number").lVal,
V_BSTRT(&RS.GetFieldValue("email")),
V_BSTRT(&RS.GetFieldValue("remark"))
)
);
RS.MoveNext();
}
}
sort(Students.begin(), Students.end(), Comp());
RS.Close();
TD.Close();
}
//##ModelId=40A481F2034B
vector<Student>& StudentList::GetSelecteds()
{
POSITION pos;
Selecteds.clear();
pos = pList->GetFirstSelectedItemPosition();
long index = 0, i_sel;
while(pos)
{
i_sel = pList->GetNextSelectedItem(pos);
Selecteds.push_back(Students[i_sel]);
}
return Selecteds;
}
//##ModelId=40A481F202EF
void StudentList::SetSelectStudent(long id)
{
for(int i=0; i<GetCount(); i++)
{
if(pList->GetItemData(i)==id)
{
SetSelected(i);
return;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -