📄 myalview.cpp
字号:
// MyALView.cpp : implementation of the CMyALView class
//
#include "stdafx.h"
#include "MyAL.h"
#include "MyALDoc.h"
#include "MyALView.h"
//#include "FindDlg.h"
#include "BaseInfoSet.h"
#include "FamilySet.h"
#include "UnitSet.h"
#include "ContactSet.h"
#include "OtherSet.h"
#include "ActiveSet.h"
#include "RemarkSet.h"
#include "Details.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CMyALView
IMPLEMENT_DYNCREATE(CMyALView, CMultiColumnSortListView)
BEGIN_MESSAGE_MAP(CMyALView, CMultiColumnSortListView)
//{{AFX_MSG_MAP(CMyALView)
ON_WM_LBUTTONDOWN()
ON_COMMAND(ID_ADDNEW, OnAddnew)
ON_COMMAND(ID_DEL, OnDel)
ON_COMMAND(ID_MODIFY, OnModify)
ON_UPDATE_COMMAND_UI(ID_MODIFY, OnUpdateModify)
ON_UPDATE_COMMAND_UI(ID_DEL, OnUpdateDel)
ON_WM_LBUTTONDBLCLK()
ON_COMMAND(ID_FIND, OnFind)
ON_COMMAND(ID_DISPLAYPART, OnDisplaypart)
ON_COMMAND(ID_BROWER, OnBrower)
ON_UPDATE_COMMAND_UI(ID_DISPLAYPART, OnUpdateDisplaypart)
ON_COMMAND(ID_SORTID, OnSortid)
ON_UPDATE_COMMAND_UI(ID_SORTID, OnUpdateSortid)
ON_COMMAND(ID_SORTNAME, OnSortname)
ON_UPDATE_COMMAND_UI(ID_SORTNAME, OnUpdateSortname)
ON_COMMAND(ID_COTACT_TEL, OnCotactTel)
ON_UPDATE_COMMAND_UI(ID_COTACT_TEL, OnUpdateCotactTel)
ON_COMMAND(ID_FAMILY_TEL, OnFamilyTel)
ON_UPDATE_COMMAND_UI(ID_FAMILY_TEL, OnUpdateFamilyTel)
ON_COMMAND(ID_UNIT_TEL, OnUnitTel)
ON_UPDATE_COMMAND_UI(ID_UNIT_TEL, OnUpdateUnitTel)
ON_COMMAND(ID_HANDSET, OnHandset)
ON_UPDATE_COMMAND_UI(ID_HANDSET, OnUpdateHandset)
ON_COMMAND(ID_EMAIL, OnEmail)
ON_UPDATE_COMMAND_UI(ID_EMAIL, OnUpdateEmail)
//}}AFX_MSG_MAP
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, CMultiColumnSortListView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CMultiColumnSortListView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CMultiColumnSortListView::OnFilePrintPreview)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMyALView construction/destruction
CMyALView::CMyALView()
{
m_pFindDlg = NULL;
m_nSortState = -1;
}
CMyALView::~CMyALView()
{
}
BOOL CMyALView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CMultiColumnSortListView::PreCreateWindow(cs);
}
/////////////////////////////////////////////////////////////////////////////
// CMyALView drawing
void CMyALView::OnDraw(CDC* pDC)
{
CMyALDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
}
void CMyALView::OnInitialUpdate()
{
CMultiColumnSortListView::OnInitialUpdate();
CListCtrl &ListCtrl = GetListCtrl();
LONG lStyle;
lStyle=GetWindowLong(ListCtrl.m_hWnd,GWL_STYLE);
lStyle&=~LVS_TYPEMASK;
lStyle|=LVS_REPORT;
SetWindowLong(ListCtrl.m_hWnd,GWL_STYLE,lStyle);
ListCtrl.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_HEADERDRAGDROP|LVS_EX_GRIDLINES);
LVCOLUMN lvcol;
lvcol.mask=LVCF_FMT|LVCF_SUBITEM|LVCF_TEXT|LVCF_WIDTH;
lvcol.fmt=LVCFMT_LEFT;
int i=0;
//ID
lvcol.pszText=_T("ID");
lvcol.iSubItem=i;
lvcol.cx=50;
ListCtrl.InsertColumn(i++,&lvcol);
//姓名
lvcol.pszText=_T("姓名");
lvcol.iSubItem=i;
lvcol.cx=100;
ListCtrl.InsertColumn(i++,&lvcol);
//联系电话
lvcol.pszText=_T("联系电话");
lvcol.iSubItem=i;
lvcol.cx=100;
ListCtrl.InsertColumn(i++,&lvcol);
//家庭电话
lvcol.pszText=_T("家庭电话");
lvcol.iSubItem=i;
lvcol.cx=100;
ListCtrl.InsertColumn(i++,&lvcol);
//单位电话
lvcol.pszText=_T("单位电话");
lvcol.iSubItem=i;
lvcol.cx=100;
ListCtrl.InsertColumn(i++,&lvcol);
//移动电话
lvcol.pszText=_T("移动电话");
lvcol.iSubItem=i;
lvcol.cx=100;
ListCtrl.InsertColumn(i++,&lvcol);
//Email
lvcol.pszText=_T("电子邮件");
lvcol.iSubItem=i;
lvcol.cx=100;
ListCtrl.InsertColumn(i++,&lvcol);
DisplayAllRecord();
/* SetItemSortState(m_nSortState, ASCENDING);
OnSortid();*/
}
/////////////////////////////////////////////////////////////////////////////
// CMyALView printing
BOOL CMyALView::OnPreparePrinting(CPrintInfo* pInfo)
{
// default preparation
return DoPreparePrinting(pInfo);
}
void CMyALView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add extra initialization before printing
}
void CMyALView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add cleanup after printing
}
/////////////////////////////////////////////////////////////////////////////
// CMyALView diagnostics
#ifdef _DEBUG
void CMyALView::AssertValid() const
{
CMultiColumnSortListView::AssertValid();
}
void CMyALView::Dump(CDumpContext& dc) const
{
CMultiColumnSortListView::Dump(dc);
}
CMyALDoc* CMyALView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMyALDoc)));
return (CMyALDoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CMyALView message handlers
void CMyALView::DisplayAllRecord()
{
CMyALDoc* pDoc = GetDocument();
if(pDoc->m_pBaseInfoSet->IsOpen())
pDoc->m_pBaseInfoSet->Close();
pDoc->m_pBaseInfoSet->Open();
if(pDoc->m_pFamilySet->IsOpen())
pDoc->m_pFamilySet->Close();
pDoc->m_pFamilySet->Open();
if(pDoc->m_pUnitSet->IsOpen())
pDoc->m_pUnitSet->Close();
pDoc->m_pUnitSet->Open();
if(pDoc->m_pContactSet->IsOpen())
pDoc->m_pContactSet->Close();
pDoc->m_pContactSet->Open();
if(!(pDoc->m_pBaseInfoSet->IsBOF()&&pDoc->m_pBaseInfoSet->IsEOF()))
{
DisplayRecord();
pDoc->m_pBaseInfoSet->MoveNext();
pDoc->m_pFamilySet->MoveNext();
pDoc->m_pUnitSet->MoveNext();
pDoc->m_pContactSet->MoveNext();
while(!pDoc->m_pBaseInfoSet->IsEOF())
{
DisplayRecord();
pDoc->m_pBaseInfoSet->MoveNext();
pDoc->m_pFamilySet->MoveNext();
pDoc->m_pUnitSet->MoveNext();
pDoc->m_pContactSet->MoveNext();
}
}
pDoc->m_pBaseInfoSet->Close();
pDoc->m_pFamilySet->Close();
pDoc->m_pUnitSet->Close();
pDoc->m_pContactSet->Close();
}
void CMyALView::OnLButtonDown(UINT nFlags, CPoint point)
{
CMultiColumnSortListView::OnLButtonDown(nFlags, point);
}
BOOL CMyALView::DisplayRecord()
{
CMyALDoc* pDoc = GetDocument();
CListCtrl &ListCtrl = GetListCtrl();
int nPos = ListCtrl.GetItemCount();
char pID[255];
ltoa(pDoc->m_pBaseInfoSet->m_ID,pID,10);
ListCtrl.InsertItem(nPos,pID);
ListCtrl.SetItemText(nPos,1,pDoc->m_pBaseInfoSet->m_Name);
ListCtrl.SetItemText(nPos,2,pDoc->m_pContactSet->m_Telephone);
ListCtrl.SetItemText(nPos,3,pDoc->m_pFamilySet->m_Telephone);
ListCtrl.SetItemText(nPos,4,pDoc->m_pUnitSet->m_Telephone);
ListCtrl.SetItemText(nPos,5,pDoc->m_pContactSet->m_Handset);
ListCtrl.SetItemText(nPos,6,pDoc->m_pContactSet->m_Email);
return TRUE;
}
void CMyALView::UpDateView(int i)
{
CListCtrl &ListCtrl = GetListCtrl();
CMyALDoc* pDoc = GetDocument();
ListCtrl.SetItemText(i,1,pDoc->m_pBaseInfoSet->m_Name);
ListCtrl.SetItemText(i,2,pDoc->m_pContactSet->m_Telephone);
ListCtrl.SetItemText(i,3,pDoc->m_pFamilySet->m_Telephone);
ListCtrl.SetItemText(i,4,pDoc->m_pUnitSet->m_Telephone);
ListCtrl.SetItemText(i,5,pDoc->m_pContactSet->m_Handset);
ListCtrl.SetItemText(i,6,pDoc->m_pContactSet->m_Email);
}
void CMyALView::OnAddnew()
{
CMyALDoc* pDoc = GetDocument();
if(pDoc->Addnew())
DisplayRecord();
}
void CMyALView::OnDel()
{
if(MessageBox("真的要删除该记录吗?","警告",MB_ICONASTERISK|MB_YESNO)==IDYES)
{
CListCtrl &ListCtrl = GetListCtrl();
int i,nState;
int nItemSelected = ListCtrl.GetSelectedCount();
int nItemCount = ListCtrl.GetItemCount();
if(nItemSelected<1) return;
CString strID;
for(i=0;i<nItemCount;i++)
{
nState=ListCtrl.GetItemState(i,LVIS_SELECTED);
if(nState!=0)
{
strID = ListCtrl.GetItemText(i,0);
ListCtrl.DeleteItem(i);
break;
}
}
int nLen = strID.GetLength();
LPCSTR lpszBuf = strID.GetBuffer(nLen);
long lID = atol(lpszBuf);
CMyALDoc* pDoc = GetDocument();
pDoc->DelRecord(lID);
}
}
void CMyALView::OnUpdateDel(CCmdUI* pCmdUI)
{
CListCtrl &ListCtrl = GetListCtrl();
int nItemSelected = ListCtrl.GetSelectedCount();
pCmdUI->Enable(nItemSelected>0);
}
void CMyALView::OnModify()
{
BeginWaitCursor();
CListCtrl &ListCtrl = GetListCtrl();
int i,nState;
int nItemSelected = ListCtrl.GetSelectedCount();
int nItemCount = ListCtrl.GetItemCount();
if(nItemSelected<1) return;
CString strID;
for(i=0;i<nItemCount;i++)
{
nState=ListCtrl.GetItemState(i,LVIS_SELECTED);
if(nState!=0)
{
strID = ListCtrl.GetItemText(i,0);
break;
}
}
int nLen = strID.GetLength();
LPCSTR lpszBuf = strID.GetBuffer(nLen);
long lID = atol(lpszBuf);
TRACE("%ld\n",lID);
CMyALDoc* pDoc = GetDocument();
if(pDoc->Modify(lID))
UpDateView(i);
}
void CMyALView::OnUpdateModify(CCmdUI* pCmdUI)
{
CListCtrl &ListCtrl = GetListCtrl();
int nItemSelected = ListCtrl.GetSelectedCount();
pCmdUI->Enable(nItemSelected>0);
}
void CMyALView::OnLButtonDblClk(UINT nFlags, CPoint point)
{
CMultiColumnSortListView::OnLButtonDblClk(nFlags, point);
BeginWaitCursor();
CListCtrl &ListCtrl = GetListCtrl();
int i,nState;
int nItemSelected = ListCtrl.GetSelectedCount();
int nItemCount = ListCtrl.GetItemCount();
if(nItemSelected<1) return;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -