📄 misview.cpp
字号:
// MISView.cpp : implementation of the CMISView class
//
#include "stdafx.h"
#include "MIS.h"
#include "MISDoc.h"
#include "MISView.h"
#include "DlgProductAdd.h"
#include "DlgStockAdd.h"
#include "DlgOrderAdd.h"
#include "DlgQuery.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CMISView
IMPLEMENT_DYNCREATE(CMISView, CListView)
BEGIN_MESSAGE_MAP(CMISView, CListView)
//{{AFX_MSG_MAP(CMISView)
ON_COMMAND(ID_PRODUCT_ALL, OnProductAll)
ON_COMMAND(ID_STOCK_ALL, OnStockAll)
ON_COMMAND(ID_ORDER_ALL, OnOrderAll)
ON_COMMAND(ID_PRODUCT_ADD, OnProductAdd)
ON_COMMAND(ID_PRODUCT_DEL, OnProductDel)
ON_COMMAND(ID_PRODUCT_MODIFY, OnProductModify)
ON_COMMAND(ID_STOCK_ADD, OnStockAdd)
ON_COMMAND(ID_STOCK_DEL, OnStockDel)
ON_COMMAND(ID_STOCK_MODIFY, OnStockModify)
ON_COMMAND(ID_ORDER_ADD, OnOrderAdd)
ON_COMMAND(ID_ORDER_DEL, OnOrderDel)
ON_COMMAND(ID_ORDER_MODIFY, OnOrderModify)
ON_COMMAND(ID_QUERY_STOCK, OnQueryStock)
ON_COMMAND(ID_QUERY_ORDER, OnQueryOrder)
//}}AFX_MSG_MAP
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, CListView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CListView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CListView::OnFilePrintPreview)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMISView construction/destruction
//##ModelId=46B6093A0149
CMISView::CMISView()
{
// TODO: add construction code here
m_iNumColumns = 0;
m_ViewPattern = VIEW_UNKOWN;
}
//##ModelId=46B6093A01D4
CMISView::~CMISView()
{
}
//##ModelId=46B6093A0196
BOOL CMISView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CListView::PreCreateWindow(cs);
}
/////////////////////////////////////////////////////////////////////////////
// CMISView drawing
//##ModelId=46B6093A0187
void CMISView::OnDraw(CDC* pDC)
{
CMISDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
}
//##ModelId=46B6093A01A5
void CMISView::OnInitialUpdate()
{
CListView::OnInitialUpdate();
InitList();
// TODO: You may populate your ListView with items by directly accessing
// its list control through a call to GetListCtrl().
}
/////////////////////////////////////////////////////////////////////////////
// CMISView printing
//##ModelId=46B6093A01A7
BOOL CMISView::OnPreparePrinting(CPrintInfo* pInfo)
{
// default preparation
return DoPreparePrinting(pInfo);
}
//##ModelId=46B6093A01B6
void CMISView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add extra initialization before printing
}
//##ModelId=46B6093A01C6
void CMISView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add cleanup after printing
}
/////////////////////////////////////////////////////////////////////////////
// CMISView diagnostics
#ifdef _DEBUG
//##ModelId=46B6093A01D6
void CMISView::AssertValid() const
{
CListView::AssertValid();
}
//##ModelId=46B6093A01E5
void CMISView::Dump(CDumpContext& dc) const
{
CListView::Dump(dc);
}
//##ModelId=46B6093A0157
CMISDoc* CMISView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMISDoc)));
return (CMISDoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CMISView message handlers
//初始化列表
//##ModelId=46B6093A0158
void CMISView::InitList()
{
//设定LIST风格
DWORD lStyle;
lStyle = GetListCtrl().GetStyle();
//报表风格
lStyle |= ( LVS_REPORT | LVS_NOSORTHEADER );
SetWindowLong( GetListCtrl().GetSafeHwnd(), GWL_STYLE, lStyle);
lStyle = GetListCtrl().GetExtendedStyle();
//设置网格
GetListCtrl().SetExtendedStyle( lStyle | LVS_EX_INFOTIP | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES );
}
//设置列表表头
//##ModelId=46B6093A0168
BOOL CMISView::SetHeadings( const CString& strHeadings )
{
int iStart = 0;
BOOL B = FALSE;
//删除所有列
while( B = GetListCtrl().DeleteColumn( 0 ))
;
m_iNumColumns = 0;
for( ;; )
{
const int iComma = strHeadings.Find( _T(','), iStart );
if( iComma == -1 )
break;
const CString strHeading = strHeadings.Mid( iStart, iComma - iStart );
iStart = iComma + 1;
int iSemiColon = strHeadings.Find( _T(';'), iStart );
if( iSemiColon == -1 )
iSemiColon = strHeadings.GetLength();
const int iWidth = atoi( strHeadings.Mid( iStart, iSemiColon - iStart ) );
iStart = iSemiColon + 1;
if( GetListCtrl().InsertColumn( m_iNumColumns++, strHeading, LVCFMT_LEFT, iWidth ) == -1 )
return FALSE;
}
return TRUE;
}
//清空列表
//##ModelId=46B6093A0167
void CMISView::ClearList()
{
GetListCtrl().DeleteAllItems();
}
//##ModelId=46B6093A0203
void CMISView::CheckViewPattern(VIEW_PATTERN ViewPattern)
{
//如果不是指定的视图模式,就重新设计列表视图。
if(ViewPattern != m_ViewPattern)
{
ClearList();
switch(ViewPattern)
{
case VIEW_PRODUCT:
SetHeadings("商品ID,50;商品名称,180;计量单位,80;商品规格,80;备注,180");
break;
case VIEW_STOCK:
SetHeadings("进货ID,50;商品名称,180;计量单位,80;进货数量,80;单价,80;进货日期,100;商品规格,80;备注,180");
break;
case VIEW_ORDER:
SetHeadings("销售ID,50;客户名称,180;商品名称,80;计量单位,80;销售数量,80;单价,80;折扣,80;销售日期,100;商品规格,80;备注,180");
break;
default:
break;
}
//重新设定当前视图模式
m_ViewPattern = ViewPattern;
}
}
//##ModelId=46B6093A0178
int CMISView::AddItem( LPCTSTR pszText, ... )
{
const int iIndex = GetListCtrl().InsertItem( GetListCtrl().GetItemCount(), pszText );
va_list list;
va_start( list, pszText );
for( int iColumn = 1; iColumn < m_iNumColumns; iColumn++ )
{
pszText = va_arg( list, LPCTSTR );
GetListCtrl().SetItem( iIndex, iColumn, LVIF_TEXT, pszText, 0, 0, 0, 0 );
}
va_end( list );
return iIndex;
}
//##ModelId=46B6093A0205
void CMISView::OnProductAll()
{
CheckViewPattern(VIEW_PRODUCT);
ClearList();
CMISDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
vector<LPPRODUCTINFO>& vProduct = pDoc->GetProduct();
CString strProductID ;
for( size_t i = 0 ; i < vProduct.size() ; i++)
{
strProductID.Format("%ld", vProduct[i]-> dwProductID);
AddItem( strProductID,
vProduct[i]-> strProductName.c_str(),
vProduct[i]-> strUnit.c_str(),
vProduct[i]-> strType.c_str(),
vProduct[i]-> strMemo.c_str());
//设定每项数据
GetListCtrl().SetItemData( i , i);
}
}
//##ModelId=46B6093A0214
void CMISView::OnStockAll()
{
CheckViewPattern(VIEW_STOCK);
ClearList();
CMISDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
vector<LPSTOCKINFO>& vStock = pDoc->GetStock();
CString strStockID, strProductID, strQuatity , strPrice;
for( size_t i = 0 ; i < vStock.size() ; i++)
{
strStockID.Format("%ld", vStock[i]-> dwStockID);
strProductID.Format("%ld", vStock[i]-> dwProductID);
strQuatity.Format("%ld", vStock[i]-> dwQuantity);
strPrice.Format("%.2f", vStock[i]-> fPrice);
AddItem( strStockID ,
vStock[i]-> strProductName.c_str(),
vStock[i]-> strUnit.c_str(),
strQuatity,
strPrice,
vStock[i]-> strDate.c_str(),
vStock[i]-> strType.c_str(),
vStock[i]-> strMemo.c_str());
//设定每项数据
GetListCtrl().SetItemData( i , i);
}
}
//##ModelId=46B6093A0271
void CMISView::OnOrderAll()
{
CheckViewPattern(VIEW_ORDER);
ClearList();
CMISDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
vector<LPORDERINFO>& vOrder = pDoc->GetOrder();
CString strStockID, strProductID, strQuatity , strPrice, strDiscount;
for( size_t i = 0 ; i < vOrder.size() ; i++)
{
strStockID.Format("%ld", vOrder[i]-> dwOrderID);
strProductID.Format("%ld", vOrder[i]-> dwProductID);
strQuatity.Format("%ld", vOrder[i]-> dwQuantity);
strPrice.Format("%.2f", vOrder[i]-> fPrice);
strDiscount.Format("%.2f" , vOrder[i]-> fDiscount);
AddItem( strStockID ,
vOrder[i]-> strCustomerName.c_str(),
vOrder[i]-> strProductName.c_str(),
vOrder[i]-> strUnit.c_str(),
strQuatity,
strPrice,
strDiscount,
vOrder[i]-> strDate.c_str(),
vOrder[i]-> strType.c_str(),
vOrder[i]-> strMemo.c_str());
//设定每项数据
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -