📄 tprodview.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 + -