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

📄 modeset.cpp

📁 自已做的简单的库存管理软件。包含员工信息管理等
💻 CPP
字号:
// ModeSet.cpp : implementation file
//

#include "stdafx.h"
#include "ModeSet.h"
#include "changemode.h"

extern _ConnectionPtr pMyConnect;
CString str_brandselect = _T("");

// CModeSet dialog

IMPLEMENT_DYNAMIC(CModeSet, CDialog)

CModeSet::CModeSet(CWnd* pParent /*=NULL*/)
	: CDialog(CModeSet::IDD, pParent)
{
	for( int i = 0; i < BRAND_MAX_NUM ; i++ )
	{
		for ( int j = 0; j < 2; j++ )
		{
			str_brand[i][j] = _T("");
		}
	}

}

CModeSet::~CModeSet()
{
}

void CModeSet::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	DDX_Control(pDX, IDC_LIST_MODE, m_list1);
	DDX_Control(pDX, IDC_COMBO_BRAND, m_combo);
}


BEGIN_MESSAGE_MAP(CModeSet, CDialog)
	ON_CBN_SELCHANGE(IDC_COMBO_BRAND, &CModeSet::OnCbnSelchangeComboBrand)
	ON_NOTIFY(LVN_ITEMACTIVATE, IDC_LIST_MODE, &CModeSet::OnLvnItemActivateListMode)
	ON_NOTIFY(HDN_ITEMCLICK, 0, &CModeSet::OnHdnItemclickListMode)
	ON_NOTIFY(NM_CLICK, IDC_LIST_MODE, &CModeSet::OnNMClickListMode)
	ON_BN_CLICKED(IDC_BUTTON_DELETE, &CModeSet::OnBnClickedButtonDelete)
	ON_BN_CLICKED(IDC_BUTTON_ADD, &CModeSet::OnBnClickedButtonAdd)
END_MESSAGE_MAP()


// CModeSet message handlers


BOOL CModeSet::OnInitDialog()
{
	CDialog::OnInitDialog();

	CComboBox* pWnd;
	pWnd = (CComboBox*)GetDlgItem(IDC_COMBO_BRAND);
	pWnd->ResetContent();

	 /*CString strTemp;
	for(int i=1;i<=1000;i++)
	{
		strTemp.Format(_T("%d"),i);
		pWnd->AddString(strTemp);
	}*/

	int number = 0;

	_RecordsetPtr m_pRs; 
	CString m_strSql; 
	
	
	m_strSql.Format(_T("select SN,BRAND from BRAND_TABLE where ( SN > 0)") ); 
	m_pRs.CreateInstance( __uuidof(Recordset) ); 
	m_pRs->Open( _bstr_t(m_strSql), _variant_t((IDispatch *)pMyConnect,true), adOpenKeyset, adLockOptimistic, adCmdText);  
		
	
	try
	{	
		if ( m_pRs->GetRecordCount() > 0 )
		{
			_variant_t   TheValue;
			_bstr_t tmp;
		
			m_pRs->MoveFirst(); 
			while(m_pRs->adoEOF==VARIANT_FALSE)	
			{
				//Retrieve column's value: 	 									
				
				TheValue = m_pRs->Fields->GetItem(_variant_t("SN"))->Value;
				if( TheValue.vt != VT_NULL )
				{
					tmp=(_bstr_t)TheValue; 			
					CString str_tmp0 = tmp;
					str_brand[number][0] = str_tmp0;
				}

				TheValue = m_pRs->Fields->GetItem(_variant_t("BRAND"))->Value;
				if( TheValue.vt != VT_NULL )
				{
					tmp=(_bstr_t)TheValue; 			
					CString str_tmp1 = tmp;
					str_brand[number][1] = str_tmp1;
				}

				number++;
				if ( number == BRAND_MAX_NUM  )
					break;
				//Do something what you want to do:	......
				m_pRs->MoveNext(); 
			}	
		}
	}
	catch (_com_error &e)
	{
		::MessageBox(NULL,e.Description(),(LPCTSTR)(_T("警告")),MB_OK);
		
	}
	m_pRs->Close(); 

	for( int i = 0; i < number; i++ )
	{
		pWnd->AddString( str_brand[i][1] );
	}
	

    m_list1.SetExtendedStyle( LVS_EX_GRIDLINES );
	m_list1.InsertColumn(0,_T("序号"));         //插入列
	m_list1.InsertColumn(1,_T("型号"));
	m_list1.InsertColumn(2,_T("品牌"));
	m_list1.InsertColumn(3,_T("类别"));
	m_list1.InsertColumn(4,_T("说明"));
	
	CRect rect4;
	m_list1.GetClientRect(rect4);                    //获得当前客户区信息
	m_list1.SetColumnWidth(0,rect4.Width()/8);       //设置列的宽度。
	m_list1.SetColumnWidth(1,rect4.Width()/5);
	m_list1.SetColumnWidth(2,rect4.Width()/5);
	m_list1.SetColumnWidth(3,rect4.Width()/5);
	m_list1.SetColumnWidth(4,rect4.Width()*8/20);




	return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}
void CModeSet::OnCbnSelchangeComboBrand()
{
	// TODO: Add your control notification handler code here
	
	int iPos=((CComboBox*)GetDlgItem(IDC_COMBO_BRAND))->GetCurSel();//当前选中的行。
	str_brandselect = str_brand[iPos][1];

	int number = 0;
	_RecordsetPtr m_pRs; 
	CString m_strSql; 
	
	CString strTemp;
	m_list1.DeleteAllItems();

	m_strSql.Format(_T("select MODE,BRAND,STORAGE_SUBTYPE_SN,NOTE from MODE_TABLE where ( BRAND='") +str_brandselect+  _T("')")); 
	m_pRs.CreateInstance( __uuidof(Recordset) ); 
	m_pRs->Open( _bstr_t(m_strSql), _variant_t((IDispatch *)pMyConnect,true), adOpenKeyset, adLockOptimistic, adCmdText);  
		
	
	try
	{	
		if ( m_pRs->GetRecordCount() > 0 )
		{
			_variant_t   TheValue;
			_bstr_t tmp;
		
			m_pRs->MoveFirst(); 
			while(m_pRs->adoEOF==VARIANT_FALSE)	
			{
				strTemp.Format(_T("%d"),number+1);
				m_list1.InsertItem(number,strTemp);

				//Retrieve column's value: 	 									
			   

				TheValue = m_pRs->Fields->GetItem(_variant_t("MODE"))->Value;
				if( TheValue.vt != VT_NULL )
				{
					tmp=(_bstr_t)TheValue; 				
					m_list1.SetItemText(number,1,tmp);   
				}

				TheValue = m_pRs->Fields->GetItem(_variant_t("BRAND"))->Value;
				if( TheValue.vt != VT_NULL )
				{
					tmp=(_bstr_t)TheValue; 
					m_list1.SetItemText(number,2,tmp);    
				}

				TheValue = m_pRs->Fields->GetItem(_variant_t("STORAGE_SUBTYPE_SN"))->Value;
				if( TheValue.vt != VT_NULL )
				{
					tmp=(_bstr_t)TheValue; 
					CString str_tmp = tmp;
					CString str_primarysn = GetSUBSTORAGETYPEPrimarySN( str_tmp );
					CString str_subname = GetSUBSTORAGETYPESubName( str_tmp );
					CString str_typename = GetSTORAGETYPENAME( str_primarysn );
					str_tmp = str_typename + _T("-") + str_subname;
					m_list1.SetItemText(number,3,str_tmp);
				}

				TheValue = m_pRs->Fields->GetItem(_variant_t("NOTE"))->Value;
				if( TheValue.vt != VT_NULL )
				{
					tmp=(_bstr_t)TheValue; 		
					m_list1.SetItemText(number,4,tmp);    
				}

				number++;

				//Do something what you want to do:	......
				m_pRs->MoveNext(); 
			}	
		}
	}
	catch (_com_error &e)
	{
		::MessageBox(NULL,e.Description(),(LPCTSTR)(_T("警告")),MB_OK);
		
	}
	m_pRs->Close(); 


}

void CModeSet::OnLvnItemActivateListMode(NMHDR *pNMHDR, LRESULT *pResult)
{
	LPNMITEMACTIVATE pNMIA = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
	// TODO: Add your control notification handler code here
	*pResult = 0;

	//::SendMessage(m_list1.m_hWnd, LVM_SETEXTENDEDLISTVIEWSTYLE,LVS_EX_FULLROWSELECT, LVS_EX_FULLROWSELECT);

}

void CModeSet::OnHdnItemclickListMode(NMHDR *pNMHDR, LRESULT *pResult)
{
	LPNMHEADER phdr = reinterpret_cast<LPNMHEADER>(pNMHDR);
	// TODO: Add your control notification handler code here
	*pResult = 0;
}

void CModeSet::OnNMClickListMode(NMHDR *pNMHDR, LRESULT *pResult)
{
	// TODO: Add your control notification handler code here
	*pResult = 0;

	::SendMessage(m_list1.m_hWnd, LVM_SETEXTENDEDLISTVIEWSTYLE,LVS_EX_FULLROWSELECT, LVS_EX_FULLROWSELECT);
}

void CModeSet::OnBnClickedButtonDelete()
{
	// TODO: Add your control notification handler code here
	// The pointer to my list view control.

		
	_RecordsetPtr m_pRecordset;
	_variant_t RecordsAffected;	
	CString m_strSql; 

	UINT i, uSelectedCount = m_list1.GetSelectedCount();
	int  nItem = -1;
	
	// Update all of the selected items.
	if (uSelectedCount > 0)
	{
		for (i=0;i < uSelectedCount;i++)
		{
			nItem = m_list1.GetNextItem(nItem, LVNI_SELECTED);
			ASSERT(nItem != -1);
			//m_list1.Update(nItem); 

			CString str_mode = m_list1.GetItemText(  nItem, 1 );
			CString str_brand = m_list1.GetItemText(  nItem, 2 );

			CString str_modesn = GetModeSN( str_mode,str_brand );

			m_strSql.Format(_T("delete from MODE_TABLE where(SN=") +str_modesn+  _T(")"));
			bool bSuccess = pMyConnect->Execute(_bstr_t(m_strSql),&RecordsAffected,adCmdText);
			if( !bSuccess )
			{
				AfxMessageBox(_T("删除型号失败,请重启系统!"));
				return;
			}
			AfxMessageBox(_T("删除型号成功!"));

			OnCbnSelchangeComboBrand();
			break;
		}
	}
	else
	{
		AfxMessageBox(_T("请选择型号进行删除!"));
		return;
	}


}

void CModeSet::OnBnClickedButtonAdd()
{
	// TODO: Add your control notification handler code here
	CWnd* pWnd;
	CString str0;

	pWnd = GetDlgItem(IDC_COMBO_BRAND);
	pWnd->GetWindowText(str0);
	if ( str0.GetLength() == 0 )
	{
		AfxMessageBox(_T("请选择品牌!"));
		return;
	}

	CChangeMode changemode;
	INT_PTR nResponse = changemode.DoModal();
	if (nResponse == IDOK)
	{
		// TODO: 在此处放置处理何时用“确定”来关闭
		//  对话框的代码

		OnCbnSelchangeComboBrand();
	}
	else if (nResponse == IDCANCEL)
	{
		// TODO: 在此放置处理何时用“取消”来关闭
		//  对话框的代码
	}
}

⌨️ 快捷键说明

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