📄 usedaoview.cpp
字号:
// UseDAOView.cpp : implementation of the CUseDAOView class
//
#include "stdafx.h"
#include "UseDAO.h"
#include "UseDAOSet.h"
#include "UseDAODoc.h"
#include "UseDAOView.h"
#include "AddRecord.h"
#include "FindRecord.h"
#include "EditRecord.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CUseDAOView
IMPLEMENT_DYNCREATE(CUseDAOView, CDaoRecordView)
BEGIN_MESSAGE_MAP(CUseDAOView, CDaoRecordView)
//{{AFX_MSG_MAP(CUseDAOView)
ON_WM_PAINT()
ON_COMMAND(ID_ADDRECORD, OnAddrecord)
ON_COMMAND(ID_DELETERECORD, OnDeleterecord)
ON_COMMAND(ID_FINDRECORD, OnFindrecord)
ON_COMMAND(ID_MODIFYRECORD, OnModifyrecord)
//}}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()
/////////////////////////////////////////////////////////////////////////////
// CUseDAOView construction/destruction
CUseDAOView::CUseDAOView()
: CDaoRecordView(CUseDAOView::IDD)
{
//{{AFX_DATA_INIT(CUseDAOView)
// NOTE: the ClassWizard will add member initialization here
m_pSet = NULL;
//}}AFX_DATA_INIT
// TODO: add construction code here
}
CUseDAOView::~CUseDAOView()
{
}
void CUseDAOView::DoDataExchange(CDataExchange* pDX)
{
CDaoRecordView::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CUseDAOView)
DDX_Control(pDX, IDC_LISTVCD, m_listvcd);
//}}AFX_DATA_MAP
}
BOOL CUseDAOView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CDaoRecordView::PreCreateWindow(cs);
}
void CUseDAOView::OnInitialUpdate()
{
m_pSet = &GetDocument()->m_useDAOSet;
CDaoRecordView::OnInitialUpdate();
GetParentFrame()->RecalcLayout();
ResizeParentToFit();
m_listvcd.ModifyStyle(0,LVS_REPORT|LVS_SINGLESEL);
m_listvcd.SetExtendedStyle(LVS_EX_FLATSB|LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
CDaoFieldInfo fieldInfo;
for(int j=0; j<m_pSet->m_nFields; j++)
{
m_pSet->GetFieldInfo(j, fieldInfo);
m_listvcd.InsertColumn(j+1, fieldInfo.m_strName);
}
DisplayRecord();
}
/////////////////////////////////////////////////////////////////////////////
// CUseDAOView printing
BOOL CUseDAOView::OnPreparePrinting(CPrintInfo* pInfo)
{
// default preparation
return DoPreparePrinting(pInfo);
}
void CUseDAOView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add extra initialization before printing
}
void CUseDAOView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add cleanup after printing
}
/////////////////////////////////////////////////////////////////////////////
// CUseDAOView diagnostics
#ifdef _DEBUG
void CUseDAOView::AssertValid() const
{
CDaoRecordView::AssertValid();
}
void CUseDAOView::Dump(CDumpContext& dc) const
{
CDaoRecordView::Dump(dc);
}
CUseDAODoc* CUseDAOView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CUseDAODoc)));
return (CUseDAODoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CUseDAOView database support
CDaoRecordset* CUseDAOView::OnGetRecordset()
{
return m_pSet;
}
/////////////////////////////////////////////////////////////////////////////
// CUseDAOView message handlers
void CUseDAOView::OnPaint()
{
CPaintDC dc(this); // device context for painting
CRect rect;
GetClientRect(&rect);
m_listvcd.MoveWindow(rect);
}
void CUseDAOView::OnAddrecord()
{
CAddRecord addDlg;
if(addDlg.DoModal()==IDOK)
{
if(addDlg.csName.IsEmpty())
{
AfxMessageBox("不能添加空记录!");
return;
}
m_pSet->AddNew();
m_pSet->m_column2 = addDlg.csName;
m_pSet->m_column3 = addDlg.csClass;
m_pSet->m_column4 = addDlg.csCountry;
m_pSet->Update();
DisplayRecord();
}
}
void CUseDAOView::OnDeleterecord()
{
POSITION pos = m_listvcd.GetFirstSelectedItemPosition();
if(pos==NULL)
return;
int nItem=m_listvcd.GetNextSelectedItem(pos);
m_pSet->Move(nItem);
CString csTemp;
csTemp.Format("你的确定删除电影\"%s\"吗?", (LPCTSTR)m_pSet->m_column2);
if(AfxMessageBox(csTemp, MB_YESNO|MB_ICONEXCLAMATION)==IDYES)
{
m_pSet->Delete();
m_pSet->MoveFirst();
DisplayRecord();
}
}
void CUseDAOView::OnFindrecord()
{
CFindRecord findDlg;
if(findDlg.DoModal()==IDOK)
{
if(findDlg.csName.IsEmpty())
{
AfxMessageBox("被寻找电影名称不能为空!");
return;
}
for(int i = 0; i < m_listvcd.GetItemCount(); i++)
{
if(m_listvcd.GetItemText(i, 1) == findDlg.csName)
{
CRect rect;
m_listvcd.GetItemRect(i, &rect, LVIR_BOUNDS);
CDC *pDC = m_listvcd.GetDC();
pDC->InvertRect(rect);
break;
}
}
}
}
void CUseDAOView::OnModifyrecord()
{
POSITION pos=m_listvcd.GetFirstSelectedItemPosition();
if(pos==NULL)
return;
int nItem=m_listvcd.GetNextSelectedItem(pos);
m_pSet->Move(nItem);
CEditRecord editDlg;
editDlg.csName = m_pSet->m_column2;
editDlg.csClass = m_pSet->m_column3;
editDlg.csCountry = m_pSet->m_column4;
if(editDlg.DoModal()==IDOK)
{
m_pSet->Edit();
m_pSet->m_column2 = editDlg.csName;
m_pSet->m_column3 = editDlg.csClass;
m_pSet->m_column4 = editDlg.csCountry;
m_pSet->Update();
DisplayRecord();
}
}
void CUseDAOView::DisplayRecord()
{
m_listvcd.DeleteAllItems();
m_pSet->MoveFirst();
int i=0;
while(!m_pSet->IsEOF())
{
LV_ITEM lvItem;
lvItem.mask = LVIF_TEXT;
lvItem.iItem = i;
lvItem.iSubItem=0;
CString csNumber;
csNumber.Format("%d", m_pSet->m_column1);
lvItem.pszText=(LPTSTR)(LPCTSTR)csNumber;
m_listvcd.InsertItem(&lvItem);
lvItem.iSubItem = 1;
lvItem.pszText=(LPTSTR)(LPCTSTR)(m_pSet->m_column2);
m_listvcd.SetItem(&lvItem);
lvItem.iSubItem=2;
lvItem.pszText=(LPTSTR)(LPCTSTR)(m_pSet->m_column3);
m_listvcd.SetItem(&lvItem);
lvItem.iSubItem=3;
lvItem.pszText=(LPTSTR)(LPCTSTR)(m_pSet->m_column4);
m_listvcd.SetItem(&lvItem);
i++;
m_pSet->MoveNext();
}
m_listvcd.SetColumnWidth(0,50);
m_listvcd.SetColumnWidth(1,150);
m_listvcd.SetColumnWidth(2,100);
m_listvcd.SetColumnWidth(3,100);
m_pSet->MoveFirst();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -