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

📄 selectitem.cpp

📁 RFID 的实用例子,登陆使用了标准动态库类
💻 CPP
字号:
// SelectItem.cpp : implementation file
//

#include "stdafx.h"
#include "New.h"
#include "SelectItem.h"

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

extern CSelectItemInfo pSel;
extern COperDb OperDb;


/////////////////////////////////////////////////////////////////////////////
// CSelectItem dialog


CSelectItem::CSelectItem(CWnd* pParent /*=NULL*/)
	: CDialog(CSelectItem::IDD, pParent)
{
	//{{AFX_DATA_INIT(CSelectItem)
	m_strComboSel = _T("");
	m_strStaticName = _T("");
	//}}AFX_DATA_INIT
}


void CSelectItem::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CSelectItem)
	DDX_Control(pDX, IDCANCEL, m_btnCanCel);
	DDX_Control(pDX, IDOK, m_btnOK);
	DDX_Control(pDX, IDC_LIST_SELECT, m_strListSel);
	DDX_CBString(pDX, IDC_COMBO_SELECT, m_strComboSel);
	DDX_Text(pDX, IDC_STATIC_NAME, m_strStaticName);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CSelectItem, CDialog)
	//{{AFX_MSG_MAP(CSelectItem)
	ON_CBN_SELCHANGE(IDC_COMBO_SELECT, OnSelchangeComboSelect)
	ON_CBN_EDITCHANGE(IDC_COMBO_SELECT, OnEditchangeComboSelect)
	ON_NOTIFY(NM_CLICK, IDC_LIST_SELECT, OnClickListSelect)
	ON_NOTIFY(NM_DBLCLK, IDC_LIST_SELECT, OnDblclkListSelect)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CSelectItem message handlers

void CSelectItem::AddComboText()
{
	try
	{
		CString strBuf;
		strBuf.Format("SELECT DISTINCT %s FROM %s", pSel.strColumnName, pSel.strTable);

		_bstr_t CommText;
		CommText = strBuf;
		_variant_t vRecordsAffected;
		OperDb.pRecordset = OperDb.pConn->Execute(CommText, &vRecordsAffected, adCmdText);
		if(vRecordsAffected.lVal==VT_NULL)	return;

		OperDb.pRecordset->MoveFirst();
		CComboBox *p=(CComboBox*)GetDlgItem(IDC_COMBO_SELECT);
		p->AddString(_T("所有"));
		do
		{
			_bstr_t str = pSel.strColumnName;
			_variant_t vtGet = OperDb.pRecordset->GetCollect(str);
			if(vtGet.vt != NULL)
			{
				strBuf.Format("%s", OperDb.CrackStrVariant(vtGet));
				p->AddString(strBuf);
			}
			OperDb.pRecordset->MoveNext();
		}while(!(OperDb.pRecordset->EndOfFile));
	}
	catch(_com_error  &e)
	{
		_bstr_t  bstrSource(e.Source());  
		_bstr_t  bstrDescription(e.Description());  
		AfxMessageBox(e.Description());
		return;
	}
	catch(...)
	{
		return;
	}

}

void CSelectItem::UpdateList(CString strSel)
{
	try
	{
		CString strBuf, strBuf1;
		strBuf.Format("SELECT * FROM %s ", pSel.strTable);
		if(strSel != _T("") && strSel != _T("所有") && strSel != _T("NULL"))
		{
			strBuf1.Format("WHERE %s LIKE '%%%s%%'", pSel.strColumnName, strSel);
			strBuf += strBuf1;
		}
		//if (pSelItemInfo.strTable == "tbl_warehousecell")
		//{
		//	strBuf1.Format(" AND productsn = 0");
		//	strBuf += strBuf1;
		//}

		_bstr_t CommText;
		CommText = strBuf;
		_variant_t vRecordsAffected;
		OperDb.pRecordset = OperDb.pConn->Execute(CommText, &vRecordsAffected, adCmdText);
		if(vRecordsAffected.lVal==VT_NULL)	return;

		OperDb.pRecordset->MoveFirst();
		int i = 0;
		m_strListSel.DeleteAllItems();
		do
		{
			int j = 0;
			strBuf.Format("%d", i+1);
			m_strListSel.InsertItem(i, strBuf);
			m_strListSel.SetItemText(i, j++, strBuf);
			_variant_t vtGet;
			_bstr_t colname;
			for ( ; j<=pSel.nItem; j++)
			{
				colname = pSel.strColumn[j-1];
				vtGet = OperDb.pRecordset->GetCollect(colname);
				if(vtGet.vt != NULL)
				{
					strBuf.Format("%s", OperDb.CrackStrVariant(vtGet));
					m_strListSel.SetItemText(i, j, strBuf);
				}
			}
			i++;
			OperDb.pRecordset->MoveNext();
		}while(!(OperDb.pRecordset->EndOfFile));
	}
	catch(_com_error  &e)
	{
		_bstr_t  bstrSource(e.Source());  
		_bstr_t  bstrDescription(e.Description());  
// 		AfxMessageBox(e.Description());
		return;
	}
	catch(...)
	{
		return;
	}


}

void CSelectItem::OnSelchangeComboSelect() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	CComboBox *p=(CComboBox*)GetDlgItem(IDC_COMBO_SELECT);
	CString strBuf;
	p->GetLBText(p->GetCurSel(), strBuf);
	UpdateList(strBuf); 
	
}

void CSelectItem::OnEditchangeComboSelect() 
{
	// TODO: Add your control notification handler code here
	UpdateData(true);
	UpdateList(m_strComboSel);
	
}

void CSelectItem::OnClickListSelect(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	CListBox *p=(CListBox*)GetDlgItem(IDC_LIST_SELECT);
	p->SetRedraw(0);
	
	int i = m_strListSel.GetSelectionMark();
	if(i==-1) return;
	else
	{
		m_strListSel.SetHotItem(i);
		m_nItemSelected = i;
	}
	p->SetRedraw(1);
	p->Invalidate();	
	
	
	
	*pResult = 0;
}

void CSelectItem::OnDblclkListSelect(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	CListBox *p=(CListBox*)GetDlgItem(IDC_LIST_SELECT);
	p->SetRedraw(0);
	
	int i = m_strListSel.GetSelectionMark();
	if(i==-1) return;
	else
	{
		m_strListSel.SetHotItem(i);
		m_nItemSelected = i;
	}
	p->SetRedraw(1);
	p->Invalidate();	
	*pResult = 0;
	OnOK();

	

}

BOOL CSelectItem::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here

		
	m_btnOK.SetIcon(IDI_ICON_OK);
	m_btnOK.DrawTransparent();
	m_btnOK.OffsetColor(CButtonST::BTNST_COLOR_BK_IN, OFFSET_COLOR);
	m_btnOK.SetColor(CButtonST::BTNST_COLOR_FG_IN, RGB(255, 0, 255));


		
	m_btnCanCel.SetIcon(IDI_ICON_CANCEL1);
	m_btnCanCel.DrawTransparent();
	m_btnCanCel.OffsetColor(CButtonST::BTNST_COLOR_BK_IN, OFFSET_COLOR);
	m_btnCanCel.SetColor(CButtonST::BTNST_COLOR_FG_IN, RGB(255, 0, 255));




	m_strStaticName = pSel.strStatic;
	CString str;
	m_strListSel.InsertColumn(0, "序号");
	for (int i = 1; i<= pSel.nItem; i++)
	{
		str = pSel.strHeadName[i-1];
		m_strListSel.InsertColumn(i, str);
	}
	RECT rect;
	m_strListSel.GetWindowRect(&rect);
	int w = rect.right - rect.left;
	int n = 30;

	m_strListSel.SetColumnWidth(0, w/n*2);
	m_strListSel.SetColumnWidth(1, w/n*4);
	m_strListSel.SetColumnWidth(2, w/n*12);



	for (i = 3; i<= pSel.nItem; i++)
	{
		m_strListSel.SetColumnWidth(i, w/n*6);
	}
	m_strListSel.SetExtendedStyle(LVS_EX_FULLROWSELECT);
	m_strListSel.DeleteAllItems();
	UpdateList(pSel.strCondition);
	AddComboText();
	UpdateData(false);

	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CSelectItem::OnOK() 
{
	// TODO: Add extra validation here
	if(m_nItemSelected != -1)
	{
		pSel.strReturn1 = m_strListSel.GetItemText(m_nItemSelected, pSel.nRetNo1 + 1);
		pSel.strReturn = m_strListSel.GetItemText(m_nItemSelected, pSel.nRetNo2 + 1);
	}
	else return;
	
	
	CDialog::OnOK();
}

⌨️ 快捷键说明

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