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

📄 tprodview.cpp

📁 完整的汽配查询软件
💻 CPP
字号:
// TProdView.cpp : implementation of the CTProdView class
//

#include "stdafx.h"
#include "TProd.h"

#include "TProdDoc.h"
#include "TProdView.h"
#include "ViewInfo.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

extern CTProdApp theApp;
extern CString select;
/////////////////////////////////////////////////////////////////////////////
// CTProdView

IMPLEMENT_DYNCREATE(CTProdView, CFormView)

BEGIN_MESSAGE_MAP(CTProdView, CFormView)
	//{{AFX_MSG_MAP(CTProdView)
	ON_WM_TIMER()
	ON_NOTIFY(NM_DBLCLK, IDC_LIST, OnDblclkList)
	ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST, OnItemchangedUserlist)
	//}}AFX_MSG_MAP
	// Standard printing commands
	ON_COMMAND(ID_FILE_PRINT, CFormView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_DIRECT, CFormView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CFormView::OnFilePrintPreview)
END_MESSAGE_MAP()


/////////////////////////////////////////////////////////////////////////////
// CTProdView construction/destruction

CTProdView::CTProdView()
	: CFormView(CTProdView::IDD)
{
	//{{AFX_DATA_INIT(CTProdView)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
	// TODO: add construction code here
	m_nCurrentSel = -1;

}

CTProdView::~CTProdView()
{
}

void CTProdView::DoDataExchange(CDataExchange* pDX)
{
	CFormView::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CTProdView)
	DDX_Control(pDX, IDC_LIST, m_ListCtrl);
	//}}AFX_DATA_MAP
}

BOOL CTProdView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return CFormView::PreCreateWindow(cs);
}

void CTProdView::OnInitialUpdate()
{
	CFormView::OnInitialUpdate();
	ListInit();
	SetTimer(1,100,NULL);
	GetParentFrame()->RecalcLayout();
	ResizeParentToFit();
}

/////////////////////////////////////////////////////////////////////////////
// CTProdView printing

BOOL CTProdView::OnPreparePrinting(CPrintInfo* pInfo)
{
	// default preparation
	return DoPreparePrinting(pInfo);
}

void CTProdView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add extra initialization before printing
}

void CTProdView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add cleanup after printing
}

void CTProdView::OnPrint(CDC* pDC, CPrintInfo* /*pInfo*/)
{
	// TODO: add customized printing code here
}

/////////////////////////////////////////////////////////////////////////////
// CTProdView diagnostics

#ifdef _DEBUG
void CTProdView::AssertValid() const
{
	CFormView::AssertValid();
}

void CTProdView::Dump(CDumpContext& dc) const
{
	CFormView::Dump(dc);
}

CTProdDoc* CTProdView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CTProdDoc)));
	return (CTProdDoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CTProdView message handlers

void CTProdView::ListInit()
{
	//设置颜色
	const COLORREF BGColor = RGB(250, 250,250);
	const COLORREF BGTColor = RGB(0, 0, 255);
	const COLORREF BGTBColor = RGB(250,250, 250);
	m_ListCtrl.SetBkColor(BGColor);
	m_ListCtrl.SetTextColor(BGTColor);
	m_ListCtrl.SetTextBkColor(BGTBColor);
	//设表格表题
	m_ListCtrl.SetExtendedStyle(LVS_EX_FLATSB|LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
	m_ListCtrl.InsertColumn(0,_T("TP NO."),LVCFMT_IMAGE|LVCFMT_LEFT);
	m_ListCtrl.InsertColumn(1,_T("ARTICLE"));
	m_ListCtrl.InsertColumn(2,_T("O.E.NO."));
	m_ListCtrl.InsertColumn(3,_T("MAKER"));
	m_ListCtrl.InsertColumn(4,_T("APPLICATION"));
	m_ListCtrl.InsertColumn(5,_T("SIZE"));
	m_ListCtrl.InsertColumn(6,_T("QTY"));
	m_ListCtrl.InsertColumn(7,_T("KGS"));
	//列的宽度
	m_ListCtrl.SetColumnWidth(0 ,48);
	m_ListCtrl.SetColumnWidth(1 ,150);
	m_ListCtrl.SetColumnWidth(2 ,105);
	m_ListCtrl.SetColumnWidth(3 ,50);
	m_ListCtrl.SetColumnWidth(4 ,115);
	m_ListCtrl.SetColumnWidth(5,50);
	m_ListCtrl.SetColumnWidth(6,40);
	m_ListCtrl.SetColumnWidth(7,50);

}

void CTProdView::OnTimer(UINT nIDEvent) 
{
	// TODO: Add your message handler code here and/or call default
	CheckSel();
//	LoadData();
	CFormView::OnTimer(nIDEvent);
}
//查询显示所选产品项目
void CTProdView::LoadData()
{
	m_ListCtrl.DeleteAllItems();
	int nItem;
	_variant_t var;
	CString selectitem,SQLstr;
	selectitem=select;
	SQLstr="SELECT * FROM [prodinfo] WHERE [prodinfo.oename]=\""+selectitem+"\"order by oeno";
	try
	{
		m_pRecordset.CreateInstance("ADODB.Recordset");
		m_pRecordset->Open(_bstr_t(SQLstr),_variant_t((IDispatch*)theApp.m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
		m_bSuccess = TRUE;
		while(!m_pRecordset->adoEOF)
		{

			var = m_pRecordset->GetCollect("tpno");
			if(var.vt != VT_NULL)
				vTpno = (LPCSTR)_bstr_t(var);
			else vTpno=(LPCSTR)_bstr_t("NULL");

			var = m_pRecordset->GetCollect("prodname");
			if(var.vt != VT_NULL)
				vProdname = (LPCSTR)_bstr_t(var);
			else vProdname=(LPCSTR)_bstr_t("NULL");

			var = m_pRecordset->GetCollect("oename");
			if(var.vt != VT_NULL)
				vOename = (LPCSTR)_bstr_t(var);
			else vOename=(LPCSTR)_bstr_t("NULL");

			var = m_pRecordset->GetCollect("oeno");
			if(var.vt != VT_NULL)
				vOeno = (LPCSTR)_bstr_t(var);
			else vOeno=(LPCSTR)_bstr_t("NULL");

			var = m_pRecordset->GetCollect("appname");
			if(var.vt != VT_NULL)
				vAppname = (LPCSTR)_bstr_t(var);
			else vAppname=(LPCSTR)_bstr_t("NULL");

			var = m_pRecordset->GetCollect("size");
			if(var.vt != VT_NULL)
				vSize = (LPCSTR)_bstr_t(var);
			else vSize=(LPCSTR)_bstr_t("NULL");

			var = m_pRecordset->GetCollect("qty");
			if(var.vt != VT_NULL)
				vQty = (LPCSTR)_bstr_t(var);
			else vQty=(LPCSTR)_bstr_t("NULL");

			var = m_pRecordset->GetCollect("kgs");
			if(var.vt != VT_NULL)
				vKgs = (LPCSTR)_bstr_t(var);
			else vKgs=(LPCSTR)_bstr_t("NULL");

			nItem=m_ListCtrl.InsertItem(0xffff,(_bstr_t)vTpno);
			m_ListCtrl.SetItem(nItem,1,1,(_bstr_t)vProdname,NULL,0,0,0);
			m_ListCtrl.SetItem(nItem,2,1,(_bstr_t)vOeno,NULL,0,0,0);
			m_ListCtrl.SetItem(nItem,3,1,(_bstr_t)vOename,NULL,0,0,0);
			m_ListCtrl.SetItem(nItem,4,1,(_bstr_t)vAppname,NULL,0,0,0);
			m_ListCtrl.SetItem(nItem,5,1,(_bstr_t)vSize,NULL,0,0,0);
			m_ListCtrl.SetItem(nItem,6,1,(_bstr_t)vQty,NULL,0,0,0);
			m_ListCtrl.SetItem(nItem,7,1,(_bstr_t)vKgs,NULL,0,0,0);
			m_pRecordset->MoveNext();
		}
	}
	catch(_com_error e)///捕捉异常
	{
		AfxMessageBox("Read Database Fail!");///显示错误信息
	}
}
//检查用户选择索引项的全局变量是否改变,若变则进行数据查询
void CTProdView::CheckSel()
{
	if(temp=="")
	{
		temp=select;
	}
	if (temp!=select)
	{	
		LoadData();
		temp=select;
	}
}

void CTProdView::OnItemchangedUserlist(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
	if(pNMListView->uNewState&LVIS_SELECTED)
	{
	m_nCurrentSel = pNMListView->iItem;
	}
	*pResult = 0;
}
void CTProdView::OnDblclkList(NMHDR* pNMHDR, LRESULT* pResult) 
{
	if (select!="BEGIN")	 //如果没有查询产品则不能调用详细信息对话框
	{
		LoadProInfo();
		vInfo.DoModal();
	}

	*pResult = 0;
}

void CTProdView::LoadProInfo()
{
	m_pRecordset->Move(m_nCurrentSel,_variant_t((long)adBookmarkFirst));
	CString pathtemp;
	
		_variant_t var;
	try
	{
		var = m_pRecordset->GetCollect("tpno");
			if(var.vt != VT_NULL)
			{
				vInfo.m_tpno=(LPCSTR)_bstr_t(var);
			}
			else vInfo.m_tpno=(CString)(LPCSTR)_bstr_t("NULL");

		var = m_pRecordset->GetCollect("prodname");
			if(var.vt != VT_NULL)
			{
				vInfo.m_prodname=(LPCSTR)_bstr_t(var);
			}
			else vInfo.m_prodname=(CString)(LPCSTR)_bstr_t("NULL");

		var = m_pRecordset->GetCollect("oeno");
			if(var.vt != VT_NULL)
			{
				vInfo.m_oeno=(LPCSTR)_bstr_t(var);
			}
			else vInfo.m_oeno=(CString)(LPCSTR)_bstr_t("NULL");

		var = m_pRecordset->GetCollect("appname");
			if(var.vt != VT_NULL)
			{
				vInfo.m_appname=(LPCSTR)_bstr_t(var);
			}
			else vInfo.m_appname=(CString)(LPCSTR)_bstr_t("NULL");

		var = m_pRecordset->GetCollect("size");
			if(var.vt != VT_NULL)
			{
				vInfo.m_size=(LPCSTR)_bstr_t(var);
			}
			else vInfo.m_size=(CString)(LPCSTR)_bstr_t("NULL");

		var = m_pRecordset->GetCollect("kgs");
			if(var.vt != VT_NULL)
			{
				vInfo.m_kgs=(LPCSTR)_bstr_t(var);
			}
			else vInfo.m_kgs=(CString)(LPCSTR)_bstr_t("NULL");

		var = m_pRecordset->GetCollect("qty");
			if(var.vt != VT_NULL)
			{
				vInfo.m_qty=(LPCSTR)_bstr_t(var);
			}
			else vInfo.m_qty=(CString)(LPCSTR)_bstr_t("NULL");

		var = m_pRecordset->GetCollect("picname");
			if(var.vt != VT_NULL)
			{
				vInfo.m_picname=(LPCSTR)_bstr_t(var);
			}
			else vInfo.m_picname=(CString)(LPCSTR)_bstr_t("NULL");
			GetProgramPath();

	}
	catch(_com_error e)///捕捉异常
	{
		AfxMessageBox("Read Database Fail!");///显示错误信息
	}
		vInfo.m_oe=select;
}

void CTProdView::GetProgramPath()
{
		//程序完全路径
	char *path;
	GetModuleFileName(NULL,exeFullPath,MAX_PATH);

	//分离路径
	path = exeFullPath;
	while(strchr(path,'\\')) 
	{
		path = strchr(path,'\\');
		path++;
	}
	*path ='\0';

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -