📄 studaoview.cpp
字号:
// StuDAOView.cpp : implementation of the CStuDAOView class
//
#include "stdafx.h"
#include "StuDAO.h"
#include "StuDAOSet.h"
#include "StuDAODoc.h"
#include "StuDAOView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CStuDAOView
IMPLEMENT_DYNCREATE(CStuDAOView, CDaoRecordView)
BEGIN_MESSAGE_MAP(CStuDAOView, CDaoRecordView)
//{{AFX_MSG_MAP(CStuDAOView)
ON_COMMAND(ID_RECORD_FIRST, OnRecordFirst)
ON_COMMAND(ID_RECORD_LAST, OnRecordLast)
ON_COMMAND(ID_RECORD_NEXT, OnRecordNext)
ON_COMMAND(ID_RECORD_PREV, OnRecordPrev)
//}}AFX_MSG_MAP
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, CDaoRecordView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CDaoRecordView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CDaoRecordView::OnFilePrintPreview)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CStuDAOView construction/destruction
CStuDAOView::CStuDAOView()
: CDaoRecordView(CStuDAOView::IDD)
{
//{{AFX_DATA_INIT(CStuDAOView)
// NOTE: the ClassWizard will add member initialization here
m_pSet = NULL;
//}}AFX_DATA_INIT
// TODO: add construction code here
}
CStuDAOView::~CStuDAOView()
{
}
void CStuDAOView::DoDataExchange(CDataExchange* pDX)
{
CDaoRecordView::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CStuDAOView)
DDX_Control(pDX, IDC_MSFLEXGRID1, m_FlexGrid);
//}}AFX_DATA_MAP
}
BOOL CStuDAOView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CDaoRecordView::PreCreateWindow(cs);
}
void CStuDAOView::OnInitialUpdate()
{
m_pSet = &GetDocument()->m_stuDAOSet;
CDaoRecordView::OnInitialUpdate();
GetParentFrame()->RecalcLayout();
ResizeParentToFit();
this->Invalidate();
}
/////////////////////////////////////////////////////////////////////////////
// CStuDAOView printing
BOOL CStuDAOView::OnPreparePrinting(CPrintInfo* pInfo)
{
// default preparation
return DoPreparePrinting(pInfo);
}
void CStuDAOView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add extra initialization before printing
}
void CStuDAOView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add cleanup after printing
}
/////////////////////////////////////////////////////////////////////////////
// CStuDAOView diagnostics
#ifdef _DEBUG
void CStuDAOView::AssertValid() const
{
CDaoRecordView::AssertValid();
}
void CStuDAOView::Dump(CDumpContext& dc) const
{
CDaoRecordView::Dump(dc);
}
CStuDAODoc* CStuDAOView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CStuDAODoc)));
return (CStuDAODoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CStuDAOView database support
CDaoRecordset* CStuDAOView::OnGetRecordset()
{
return m_pSet;
}
/////////////////////////////////////////////////////////////////////////////
// CStuDAOView message handlers
void CStuDAOView::OnDraw(CDC* pDC)
{
// TODO: Add your specialized code here and/or call the base class
CRect rect; // 记录视图窗口的客户区大小
char lpstrRow[6] = "1"; // FlexGrid控件当前行第0列的显示
int iRowCount = 1; // FlexGrid控件的当前行
// 调整FlexGrid控件的大小为整个客户区大小
GetClientRect(rect); // 获取视图窗口客户区
m_FlexGrid.MoveWindow(rect,TRUE); // 改变FlexGrid控件的位置和大小
m_FlexGrid.RedrawWindow(NULL,NULL,
RDW_INVALIDATE | RDW_UPDATENOW | RDW_ERASE); // 重画控件
// 设置FlexGrid将要显示的总行数和总列数
m_FlexGrid.SetCols((m_pSet->m_nFields)+1);
m_FlexGrid.SetRows(6);
// 设置控件所有行的宽度和所有列的高度
m_FlexGrid.SetColWidth(-1,1000);
m_FlexGrid.SetRowHeight(-1,360);
// 单独设置控件第0列(序号列)的宽度
m_FlexGrid.SetColWidth(0,600);
// 设置控件第0行(标题行)个列的显示文本
m_FlexGrid.SetRow(0);
m_FlexGrid.SetCol(1);
m_FlexGrid.SetText("学号");
m_FlexGrid.SetCol(2);
m_FlexGrid.SetText("姓名");
m_FlexGrid.SetCol(3);
m_FlexGrid.SetText("年龄");
m_FlexGrid.SetCol(4);
m_FlexGrid.SetText("籍贯");
m_FlexGrid.SetCol(5);
m_FlexGrid.SetText("班级");
// 将记录集移动到第一个
m_pSet->MoveFirst();
// 显示每一个记录集的各个字段
while(!m_pSet->IsEOF())
{
// 移动到当前行
m_FlexGrid.SetRow(iRowCount);
// 在当前行第0列显示行号
m_FlexGrid.SetCol(0);
itoa(iRowCount,(char*)lpstrRow,6);
m_FlexGrid.SetText(lpstrRow);
// 在当前行第1列显示学生记录的学号字段
CString studentID;
studentID.Format("%d",m_pSet->m_StudentID);
m_FlexGrid.SetCol(1);
m_FlexGrid.SetText(studentID);
// 在当前行第2列显示学生记录的姓名字段
m_FlexGrid.SetCol(2);
m_FlexGrid.SetText(m_pSet->m_Name);
// 在当前行第3列显示学生记录的年龄字段
CString age;
age.Format("%d",m_pSet->m_Age);
m_FlexGrid.SetCol(3);
m_FlexGrid.SetText(age);
// 在当前行第4列显示学生记录的地址字段
m_FlexGrid.SetCol(4);
m_FlexGrid.SetText(m_pSet->m_Address);
// 在当前行第5列显示学生记录的班级字段
CString classID;
classID.Format("%d",m_pSet->m_ClassID);
m_FlexGrid.SetCol(5);
m_FlexGrid.SetText(classID);
if(!m_pSet->IsEOF())// 如果没有结束,移动到下一行继续显示
{
m_pSet->MoveNext(); // 移动到下一个记录
iRowCount += 1; // 当前行加1
}
}
// 将记录集移动到第一个
m_pSet->MoveFirst();
// 设置控件的当前选择为第一行第一列
m_FlexGrid.SetRow(1);
m_FlexGrid.SetCol(1);
}
void CStuDAOView::OnRecordFirst()
{
// TODO: Add your command handler code here
// 移动FlexGrid控件中的选择到第一行
m_FlexGrid.SetRow(1);
m_FlexGrid.SetCol(1);
m_FlexGrid.SetRowSel(1);
m_FlexGrid.SetColSel(m_pSet->m_nFields);
// 移动记录集到第一个
m_pSet->MoveFirst();
}
void CStuDAOView::OnRecordLast()
{
// TODO: Add your command handler code here
// 移动FlexGrid控件中的选择到最后一行
m_FlexGrid.SetRow(m_pSet->GetRecordCount());
m_FlexGrid.SetCol(1);
m_FlexGrid.SetRowSel(m_pSet->GetRecordCount());
m_FlexGrid.SetColSel(m_pSet->m_nFields);
// 移动记录集到最后一个
m_pSet->MoveLast();
}
void CStuDAOView::OnRecordNext()
{
// TODO: Add your command handler code here
int iCurrentRow; // 记录FlexGrid控件中的当前行
iCurrentRow = m_FlexGrid.GetRow(); // 获取FlexGrid控件中的当前行
if(iCurrentRow<m_pSet->GetRecordCount()) // 如果当前行不是最后一行
{
// 移动FlexGrid控件中的选择到下一行
m_FlexGrid.SetRow(iCurrentRow+1);
m_FlexGrid.SetCol(1);
m_FlexGrid.SetRowSel(iCurrentRow+1);
m_FlexGrid.SetColSel(m_pSet->m_nFields);
// 移动到下一个记录集
m_pSet->MoveNext();
}
}
void CStuDAOView::OnRecordPrev()
{
// TODO: Add your command handler code here
int iCurrentRow; // 记录FlexGrid控件中的当前行
iCurrentRow = m_FlexGrid.GetRow(); // 获取FlexGrid控件中的当前行
if(iCurrentRow>1) // 如果当前行不是第一行
{
// 移动FlexGrid控件中的选择到下一行
m_FlexGrid.SetRow(iCurrentRow-1);
m_FlexGrid.SetCol(1);
m_FlexGrid.SetRowSel(iCurrentRow-1);
m_FlexGrid.SetColSel(m_pSet->m_nFields);
// 移动到上一个记录集
m_pSet->MovePrev();
}
}
BEGIN_EVENTSINK_MAP(CStuDAOView, CDaoRecordView)
//{{AFX_EVENTSINK_MAP(CStuDAOView)
//}}AFX_EVENTSINK_MAP
END_EVENTSINK_MAP()
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -