⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 misview.cpp

📁 可以应用于企业商品管理
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// 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 + -