📄 mylistview.cpp
字号:
// MyListView.cpp : implementation file
//
#include "stdafx.h"
#include "MyMFCODBCSmpl.h"
#include "MyListView.h"
#include "ProductOrderSet.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CMyListView
IMPLEMENT_DYNCREATE(CMyListView, CListView)
CMyListView::CMyListView()
{
}
CMyListView::~CMyListView()
{
}
BEGIN_MESSAGE_MAP(CMyListView, CListView)
//{{AFX_MSG_MAP(CMyListView)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMyListView drawing
void CMyListView::OnDraw(CDC* pDC)
{
CDocument* pDoc = GetDocument();
// TODO: add draw code here
}
/////////////////////////////////////////////////////////////////////////////
// CMyListView diagnostics
#ifdef _DEBUG
void CMyListView::AssertValid() const
{
CListView::AssertValid();
}
void CMyListView::Dump(CDumpContext& dc) const
{
CListView::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CMyListView message handlers
void CMyListView::EraseList()
{
CListCtrl& ctlList = GetListCtrl();
//删除所有记录行
ctlList.DeleteAllItems();
//删除所有表头列
while(ctlList.DeleteColumn(0));
UpdateWindow();
}
BOOL CMyListView::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext)
{
//设置列表视为REPORT风格
dwStyle |= LVS_REPORT;
return CWnd::Create(lpszClassName, lpszWindowName, dwStyle, rect, pParentWnd, nID, pContext);
}
void CMyListView::AddColTitle(int nType)
{
EraseList();
CListCtrl& MyListCtrl = this->GetListCtrl();
if(nType == 0)//当前对象为产品分类
{
MyListCtrl.InsertColumn(0,"产品",LVCFMT_LEFT,100);
}
else//当前对象为产品
{
MyListCtrl.InsertColumn(0,"产品",LVCFMT_LEFT,100);
MyListCtrl.InsertColumn(1,"类别",LVCFMT_LEFT,100);
MyListCtrl.InsertColumn(2,"定购日期",LVCFMT_LEFT,100);
MyListCtrl.InsertColumn(3,"定购数量",LVCFMT_LEFT,100);
MyListCtrl.InsertColumn(4,"单价",LVCFMT_LEFT,100);
MyListCtrl.InsertColumn(5,"单位",LVCFMT_LEFT,100);
MyListCtrl.InsertColumn(6,"折扣",LVCFMT_LEFT,100);
MyListCtrl.InsertColumn(7,"分类描述",LVCFMT_LEFT,100);
}
}
int nDebut = 0;
//响应左面视图消息
void CMyListView::OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint)
{
//第一次还没有选中一对象,因此不显示属性
if( !nDebut )
{
nDebut = 1;return;
}
WPARAM wParam;LPARAM lParam;
wParam = lHint%10; lParam = lHint/10;
AddColTitle(wParam);
int nItem = 0;
char strNum[20];
CListCtrl& MyListCtrl = this->GetListCtrl();
CDatabase db;
if( !db.Open(_T("MyNWind"))) return;
CProductOrderSet* pPrdtOrderSet = new CProductOrderSet(&db);
char strID[10];
_itoa(lParam,strID,10);
CString strFilter = _T("");
if( wParam == 0 )
strFilter = CString("CategoryID = ");
else
strFilter = CString("ProductID = ");
//根据ID进行过滤
pPrdtOrderSet->m_strFilter = strFilter + strID ;
if( !pPrdtOrderSet->IsOpen() )
pPrdtOrderSet->Open();
if( !pPrdtOrderSet->IsBOF() )
pPrdtOrderSet->MoveFirst();
//读出所有相应记录并显示到列表视图
while(!pPrdtOrderSet->IsEOF())
{
CString strPrdtName = pPrdtOrderSet->m_ProductName;
nItem = MyListCtrl.InsertItem( nItem,
strPrdtName.GetBuffer(strPrdtName.GetLength()));
if(nItem == -1) break;
MyListCtrl.SetItemText(nItem,1,pPrdtOrderSet->m_CategoryName);
_itoa(pPrdtOrderSet->m_Quantity,strNum,10);
MyListCtrl.SetItemText(nItem,3,strNum);
nItem++;
pPrdtOrderSet->MoveNext();
}
pPrdtOrderSet->Close();
delete pPrdtOrderSet;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -