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