📄 leftview.cpp
字号:
CTreeView::OnKeyUp(nChar, nRepCnt, nFlags);
}
void CLeftView::OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint)
{
// TODO: Add your specialized code here and/or call the base class
CLessonDoc * pDoc = GetDocument();
CMainFrame * pf=(CMainFrame *)AfxGetApp()->m_pMainWnd;
if(pf)
{
CStatusBar * Bar=&pf->m_wndStatusBar;
if(Bar)
{
CString str;
str.Format("%d个教师,%d个任务",pDoc->GetTeacherCount(),pDoc->GetMissionCount());
Bar->SetPaneText(1,str);
}
}
if(pDoc->m_TeacherArray.GetSize()<1)
{
GetTreeCtrl().DeleteAllItems();
return;
}
switch(pDoc->m_Info.m_ViewStatus)
{
case TEACHER_MISSION:
case TEACHER_LESSON:
UpdateTeacher();
break;
case CLASS_LESSON:
UpdateClass();
break;
default:
GetTreeCtrl().DeleteAllItems();
}
}
void CLeftView::UpdateTeacher()
{
CLessonDoc * pDoc = GetDocument();
int SelectGrade=pDoc->m_Info.m_SelectGrade;
int SelectClass=pDoc->m_Info.m_SelectClass;
CString SelectName=pDoc->m_Info.m_SelectTeacherName;
GetTreeCtrl().DeleteAllItems();
int count=pDoc->m_TeacherArray.GetSize();
for(int i=0;i<count;i++)
{
GetTreeCtrl().InsertItem(((CTeacher *)pDoc->m_TeacherArray.GetAt(i))->m_Name);
}
pDoc->m_Info.m_SelectGrade=SelectGrade;
pDoc->m_Info.m_SelectClass=SelectClass;
pDoc->m_Info.m_SelectTeacherName=SelectName;
if(pDoc->m_Info.m_SelectTeacherName.GetLength()>0)
{
HTREEITEM hItem=FindStrItem(pDoc->m_Info.m_SelectTeacherName);
GetTreeCtrl().SelectItem(hItem);
}
else
{
HTREEITEM hItem=GetTreeCtrl().GetFirstVisibleItem();
GetTreeCtrl().SelectItem(hItem);
pDoc->m_Info.m_SelectTeacherName=GetTreeCtrl().GetItemText(hItem);
}
}
void CLeftView::UpdateClass()
{
CLessonDoc * pDoc = GetDocument();
// GetTreeCtrl().SelectItem(0);
int SelectGrade=pDoc->m_Info.m_SelectGrade;
int SelectClass=pDoc->m_Info.m_SelectClass;
CString SelectName=pDoc->m_Info.m_SelectTeacherName;
HTREEITEM hItem;
CString str;
GetTreeCtrl().DeleteAllItems();
int GradeCount=pDoc->GetGradeCount();
for(int i=1;i<=GradeCount;i++)
{
str.Format("%d年级",i);
hItem=GetTreeCtrl().InsertItem(str);
{
int ClassCount=pDoc->GetClassCount(i);
for(int j=1;j<=ClassCount;j++)
{
str.Format("%d班",j);
GetTreeCtrl().InsertItem(str,hItem);
}
}
}
GetTreeCtrl().InsertItem("总课表");
pDoc->m_Info.m_SelectGrade=SelectGrade;
pDoc->m_Info.m_SelectClass=SelectClass;
pDoc->m_Info.m_SelectTeacherName=SelectName;
if(pDoc->m_Info.m_SelectGrade>0)
{
str.Format("%d年级",pDoc->m_Info.m_SelectGrade);
hItem=FindStrItem(str);
if(pDoc->m_Info.m_SelectClass>0)
{
GetTreeCtrl().Expand(hItem,TVE_EXPAND);
str.Format("%d班",pDoc->m_Info.m_SelectClass);
hItem=FindStrItem(str,hItem);
GetTreeCtrl().SelectItem(hItem);
}
else
GetTreeCtrl().SelectItem(hItem);
}
else
GetTreeCtrl().SelectItem(FindStrItem("总课表"));
}
HTREEITEM CLeftView::FindStrItem(CString Name, HTREEITEM hItem)
{
CString str;
if(hItem==NULL)
{
HTREEITEM h=GetTreeCtrl().GetFirstVisibleItem();
while(h)
{
str=GetTreeCtrl().GetItemText(h);
if(!str.CompareNoCase(Name))
return h;
h=GetTreeCtrl().GetNextVisibleItem(h);
}
return NULL;
}
else
{
HTREEITEM h=GetTreeCtrl().GetChildItem(hItem);
while(GetTreeCtrl().GetChildItem(h)==NULL)
{
str=GetTreeCtrl().GetItemText(h);
if(!str.CompareNoCase(Name))
return h;
h=GetTreeCtrl().GetNextVisibleItem(h);
}
return NULL;
}
}
void CLeftView::AddTeacher()
{
CLessonDoc * pDoc=GetDocument();
CString NewName=pDoc->NewName();
HTREEITEM hItem=GetTreeCtrl().InsertItem(NewName);
CTeacher * Teacher=new(CTeacher);
Teacher->m_Name=NewName;
pDoc->m_TeacherArray.Add(Teacher);
GetTreeCtrl().EditLabel(hItem);
GetTreeCtrl().SelectItem(hItem);
pDoc->m_Info.m_IsArrangeRight=FALSE;
pDoc->SetModifiedFlag();
}
void CLeftView::AddMission()
{
CLessonDoc * pDoc=GetDocument();
HTREEITEM hItem=GetTreeCtrl().GetSelectedItem();
if(hItem==NULL)return;
CString Name=GetTreeCtrl().GetItemText(hItem);
CMission * Mission=new(CMission);
CAddMissionDlg dlg;
dlg.Mission=Mission;
dlg.pDocument=pDoc;
dlg.m_Head=pDoc->m_Info.m_SelectTeacherName+"(增加任务)";
if(dlg.DoModal()==IDOK)
{
if(pDoc->GetMission(Mission->m_Grade,Mission->m_Class,Mission->m_Subject)==NULL)
{
CTeacher * Teacher=pDoc->GetTeacher(Name);
Teacher->m_MissionArray.Add(Mission);
pDoc->UpdateAllViews(pDoc->GetListView());
pDoc->m_Info.m_IsArrangeRight=FALSE;
pDoc->SetModifiedFlag();
if(dlg.m_IsAllCopy)
{
for(int i=pDoc->m_TeacherArray.GetSize()-1;i>=0;i--)
{
Teacher=(CTeacher *)pDoc->m_TeacherArray.GetAt(i);
for(int j=Teacher->m_MissionArray.GetSize()-1;j>=0;j--)
{
CMission * TMiss=(CMission *)Teacher->m_MissionArray.GetAt(j);
if(TMiss->m_Grade==Mission->m_Grade&&TMiss->m_Class==Mission->m_Class)
continue;
if(!TMiss->m_Subject.CompareNoCase(Mission->m_Subject))
{
TMiss->m_Request.RemoveAll();
TMiss->m_Request.Append(Mission->m_Request);
}
}
}
}
}
else
{
MessageBox("此项任务已经存在","错误",MB_ICONERROR);
delete Mission;
}
}
else delete Mission;
}
void CLeftView::DelTeacher()
{
HTREEITEM hItem=GetTreeCtrl().GetSelectedItem();
if(!hItem)return;
CString Name=GetTreeCtrl().GetItemText(hItem);
CLessonDoc * pDoc=GetDocument();
if(MessageBox("确实要删除该教师吗?","删除教师",MB_OKCANCEL|MB_ICONQUESTION)==IDOK)
{
int nIndex=pDoc->GetTeacherIndex(Name);
delete pDoc->m_TeacherArray.GetAt(nIndex);
pDoc->m_TeacherArray.RemoveAt(nIndex);
GetTreeCtrl().DeleteItem(hItem);
pDoc->UpdateAllViews(pDoc->GetListView());
pDoc->m_Info.m_IsArrangeRight=FALSE;
pDoc->SetModifiedFlag();
}
}
void CLeftView::FixTeacher()
{
HTREEITEM hItem=GetTreeCtrl().GetSelectedItem();
if(!hItem)return;
CString Name=GetTreeCtrl().GetItemText(hItem);
CLessonDoc * pDoc=GetDocument();
CTeacherInfoDlg dlg;
dlg.pDocument=pDoc;
dlg.m_TeacherName=Name;
if(dlg.DoModal()==IDOK)
{
CTeacher * Teacher=pDoc->GetTeacher(Name);
Teacher->m_Request.RemoveAll();
CString Str;
Teacher->m_Request.Append(dlg.m_Request);
pDoc->m_Info.m_IsArrangeRight=FALSE;
pDoc->SetModifiedFlag();
}
}
void CLeftView::OnAddteacher()
{
// TODO: Add your command handler code here
AddTeacher();
}
void CLeftView::OnUpdateAddteacher(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
CLessonDoc * pDoc=GetDocument();
if(pDoc->m_Info.m_ViewStatus==TEACHER_MISSION)
pCmdUI->Enable();
else
pCmdUI->Enable(FALSE);
}
void CLeftView::OnFix()
{
// TODO: Add your command handler code here
FixTeacher();
}
void CLeftView::OnUpdateFix(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
CLessonDoc * pDoc=GetDocument();
if(pDoc->m_Info.m_ViewStatus!=CLASS_LESSON&&pDoc->m_TeacherArray.GetSize()>0)
pCmdUI->Enable();
else
pCmdUI->Enable(FALSE);
}
void CLeftView::OnDelete()
{
// TODO: Add your command handler code here
DelTeacher();
}
void CLeftView::OnUpdateDelete(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
CLessonDoc * pDoc=GetDocument();
if(pDoc->m_Info.m_ViewStatus==TEACHER_MISSION&&pDoc->m_TeacherArray.GetSize()>0)
pCmdUI->Enable();
else
pCmdUI->Enable(FALSE);
}
void CLeftView::OnAddmission()
{
// TODO: Add your command handler code here
AddMission();
}
void CLeftView::OnUpdateAddmission(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
CLessonDoc * pDoc=GetDocument();
if(pDoc->m_Info.m_ViewStatus==TEACHER_MISSION&&pDoc->m_TeacherArray.GetSize()>0)
pCmdUI->Enable();
else
pCmdUI->Enable(FALSE);
}
void CLeftView::OnFilePrintSetup()
{
// TODO: Add your command handler code here
CLessonApp * pa=(CLessonApp *)AfxGetApp();
CPageSetDlg dlg;
if(dlg.DoModal()==IDOK)
pa->m_Print.WriteReg();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -