// ShangPin.cpp : implementation file // #include "stdafx.h" #include "ylgl.h" #include "ShangPin.h" #include "MyMdi.H" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // ShangPin IDC_COMBOsplb IMPLEMENT_DYNCREATE(ShangPin, MyFormView) ShangPin::ShangPin() : MyFormView(ShangPin::IDD) { //{{AFX_DATA_INIT(ShangPin) m_spbz = _T(""); m_spdanwei = _T(""); m_spid = _T(""); m_spjiaga1 = _T(""); m_spjiage2 = _T(""); m_spname = _T(""); m_spjiage3 = _T(""); m_autoid = 0; m_radio1 = 0; //}}AFX_DATA_INIT } ShangPin::~ShangPin() { } void ShangPin::DoDataExchange(CDataExchange* pDX) { MyFormView::DoDataExchange(pDX); //{{AFX_DATA_MAP(ShangPin) DDX_Control(pDX, IDC_COMBOstatus, m_combostatus); DDX_Control(pDX, IDC_EDITspjiage3, m_editctrl3); DDX_Control(pDX, IDC_EDITspjiage2, m_editctrl2); DDX_Control(pDX, IDC_EDITspjiaga1, m_editctrl1); DDX_Control(pDX, IDC_COMBOsplb, m_combosplb); DDX_Control(pDX, IDC_LIST2, m_List1); DDX_Control(pDX, IDC_STATIC1, m_static1); DDX_Text(pDX, IDC_EDITspbz, m_spbz); DDV_MaxChars(pDX, m_spbz, 1000); DDX_Text(pDX, IDC_EDITspdanwei, m_spdanwei); DDX_Text(pDX, IDC_EDITspid, m_spid); DDX_Text(pDX, IDC_EDITspjiaga1, m_spjiaga1); DDX_Text(pDX, IDC_EDITspjiage2, m_spjiage2); DDX_Text(pDX, IDC_EDITspname, m_spname); DDX_Text(pDX, IDC_EDITspjiage3, m_spjiage3); DDX_Radio(pDX, IDC_RADIO1, m_radio1); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(ShangPin, MyFormView) //{{AFX_MSG_MAP(ShangPin) ON_BN_CLICKED(IDC_BUTsave, OnBUTsave) ON_BN_CLICKED(IDC_BUTdel, OnBUTdel) ON_BN_CLICKED(IDC_BUTclose, OnBUTclose) ON_NOTIFY(NM_CLICK, IDC_LIST2, OnClickList2) ON_BN_CLICKED(IDC_BUTadd, OnBUTadd) ON_CBN_SELCHANGE(IDC_COMBOsplb, OnSelchangeCOMBOsplb) ON_BN_CLICKED(IDC_RADIO1, OnRadio1) ON_BN_CLICKED(IDC_RADIO2, OnRadio2) ON_BN_CLICKED(IDC_RADIO9, OnRadio9) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // ShangPin diagnostics #ifdef _DEBUG void ShangPin::AssertValid() const { MyFormView::AssertValid(); } void ShangPin::Dump(CDumpContext& dc) const { MyFormView::Dump(dc); } #endif //_DEBUG ///////////////////////////////////////////////////////////////////////////// // ShangPin message handlers void ShangPin::OnInitialUpdate() { MyFormView::OnInitialUpdate(); // TODO: Add your specialized code here and/or call the base class if (IsHasRights2new(29) == 0) { GetDlgItem(IDC_BUTsave)->EnableWindow(0); } CMyMdi Mdi; Mdi.SetSubView((CWnd*)GetParent(), (CWnd*)this); // Here we create the outbar control using the splitter as its parent // and setting its id to the first pane. CRect rc2; GetWindowRect(rc2); ::MoveWindow(m_hWnd, g_rc.left, g_rc.top, g_rc.Width(), g_rc.Height(), TRUE); EnumChildWindows(m_hWnd, (WNDENUMPROC)EnumChildProc, 0); m_combosplb.GetWindowRect(rc2); ScreenToClient(rc2); rc2.bottom += 200; m_combosplb.MoveWindow(rc2); m_combostatus.GetWindowRect(rc2); ScreenToClient(rc2); rc2.bottom += 200; m_combostatus.MoveWindow(rc2); m_combostatus.AddString("上架"); m_combostatus.AddString("下架"); m_static1.SetFont(&g_titlefont); m_List1.SetHeadings("编号, 50;商品名称, 100;单位, 50;进价, 50;卖价, 50;制作费用,80;商品分类, 100;状态,100"); m_List1.LoadColumnInfo(100); g_sendhead.bsql = 0; g_sendhead.code[0] = 2; g_sendhead.code[1] = 4; g_sendhead.tabcount = 2; g_pMainWnd->ProcessChatMessageRequest2(2); if (g_bSendOK == 0)return; DataToArray(&g_List1array, &m_List1array); if (IsHasRights2new(29) == 0) { for (int i = 0; i < m_List1array.GetSize(); i++) { m_List1array.ElementAt(i).SetAt(3, "***"); m_List1array.ElementAt(i).SetAt(4, "***"); m_List1array.ElementAt(i).SetAt(5, "***"); } } for (int i = 0; i < g_List1array.GetSize(); i++) m_combosplb.AddString(g_List1array.ElementAt(i).ElementAt(0)); } void ShangPin::OnSelchangeCOMBOsplb() { // TODO: Add your control notification handler code here int pos = m_combosplb.GetCurSel(); if (pos == -1)return; CString str; m_combosplb.GetLBText(pos, str); FillGrid(str); } void ShangPin::FillGrid(CString str) { UpdateData(); m_List1.DeleteAllItems2(); int ii = 0; m_List1.m_arLabels.SetSize(m_List1array.GetSize(), 1); int count = 0; if (m_radio1 == 2) { for (ii = 0; ii < m_List1.m_arLabels.GetSize(); ii++) { if (m_List1array.ElementAt(ii).ElementAt(6) == str) { m_List1.m_arLabels.ElementAt(count++).Copy(m_List1array.ElementAt(ii)); } } } else if (m_radio1 == 0) { for (ii = 0; ii < m_List1.m_arLabels.GetSize(); ii++) { if (m_List1array.ElementAt(ii).ElementAt(6) == str && m_List1array.ElementAt(ii).ElementAt(7) != "下架") { m_List1.m_arLabels.ElementAt(count++).Copy(m_List1array.ElementAt(ii)); } } } else { for (ii = 0; ii < m_List1.m_arLabels.GetSize(); ii++) { if (m_List1array.ElementAt(ii).ElementAt(6) == str && m_List1array.ElementAt(ii).ElementAt(7) == "下架") { m_List1.m_arLabels.ElementAt(count++).Copy(m_List1array.ElementAt(ii)); } } } m_List1.m_arLabels.SetSize(count, 1); ii = count; m_List1.m_LabelCount = ii; m_List1.SetItemCountEx(ii); OnBUTadd(); } void ShangPin::OnBUTclose() { // TODO: Add your control notification handler code here GetParent()->SendMessage(WM_CLOSE); } void ShangPin::ClearCtrl() { m_spbz = _T(""); m_spdanwei = _T(""); m_spjiaga1 = _T(""); m_spjiage2 = _T(""); m_spjiage3 = _T(""); m_spname = _T(""); UpdateData(false); AutoId(); } void ShangPin::OnClickList2(NMHDR* pNMHDR, LRESULT* pResult) { // TODO: Add your control notification handler code here ListSelChange(); *pResult = 0; } void ShangPin::ListSelChange() { POSITION pos; pos = m_List1.GetFirstSelectedItemPosition(); if (pos == NULL) { OnBUTadd(); return; } int iItem = m_List1.GetNextSelectedItem(pos); m_oldspid = m_List1.GetItemText(iItem, 0); for (int ii = 0; ii < m_List1array.GetSize(); ii++) { if (m_List1array.ElementAt(ii).ElementAt(0) == m_oldspid) { m_spid = m_List1array.ElementAt(ii).ElementAt(0); m_spname = m_List1array.ElementAt(ii).ElementAt(1); m_spdanwei = m_List1array.ElementAt(ii).ElementAt(2); m_spjiaga1 = m_List1array.ElementAt(ii).ElementAt(3); m_spjiage2 = m_List1array.ElementAt(ii).ElementAt(4); m_spjiage3 = m_List1array.ElementAt(ii).ElementAt(5); m_spbz = m_List1array.ElementAt(ii).ElementAt(8); CString status = m_List1array.ElementAt(ii).ElementAt(7); m_combostatus.SetCurSel(m_combostatus.FindString(0, status)); UpdateData(false); return; } } } void ShangPin::OnBUTadd() { // TODO: Add your control notification handler code here m_oldspid.Empty(); ClearCtrl(); } void ShangPin::OnBUTsave() // 保存按钮; { UpdateData(); m_spname.TrimRight(); if (m_spid.IsEmpty() || m_spname.IsEmpty() || m_spjiaga1.IsEmpty() || m_spjiage2.IsEmpty()) { AfxMessageBox("资料不全!", MB_ICONINFORMATION); return; } if (m_spname.Find("/") != -1) { AfxMessageBox("产品名称中请不要包含以下字符 /\\:*?\"<>|", MB_ICONINFORMATION); return; } if (m_spname.Find("\\") != -1) { AfxMessageBox("产品名称中请不要包含以下字符 /\\:*?\"<>|", MB_ICONINFORMATION); return; } if (m_spname.Find(":") != -1) { AfxMessageBox("产品名称中请不要包含以下字符 /\\:*?\"<>|", MB_ICONINFORMATION); return; } if (m_spname.Find("*") != -1) { AfxMessageBox("产品名称中请不要包含以下字符 /\\:*?\"<>|", MB_ICONINFORMATION); return; } if (m_spname.Find("?") != -1) { AfxMessageBox("产品名称中请不要包含以下字符 /\\:*?\"<>|", MB_ICONINFORMATION); return; } if (m_spname.Find("\"") != -1) { AfxMessageBox("产品名称中请不要包含以下字符 /\\:*?\"<>|", MB_ICONINFORMATION); return; } if (m_spname.Find("<") != -1) { AfxMessageBox("产品名称中请不要包含以下字符 /\\:*?\"<>|", MB_ICONINFORMATION); return; } if (m_spname.Find(">") != -1) { AfxMessageBox("产品名称中请不要包含以下字符 /\\:*?\"<>|", MB_ICONINFORMATION); return; } if (m_spname.Find("|") != -1) { AfxMessageBox("产品名称中请不要包含以下字符 /\\:*?\"<>|", MB_ICONINFORMATION); return; } CString sql; CString splb; int pos = m_combosplb.GetCurSel(); if (pos == -1)return; m_combosplb.GetLBText(pos, splb); CString status; pos = m_combostatus.GetCurSel(); if (pos == -1) { AfxMessageBox("资料不全!", MB_ICONINFORMATION); return; } m_combostatus.GetLBText(pos, status); if (m_oldspid.IsEmpty())//新增 { if (IsExist()) { AfxMessageBox("已有此商品记录,请重新输入!", MB_ICONINFORMATION); return; } sql.Format("insert into shangpin(spid,spname,spdanwei,spjiaga1,spjiage2,spjiage3,splb,spbz,hide)values('%s','%s','%s','%s','%s','%s','%s','%s','%s')", m_spid, m_spname, m_spdanwei, m_spjiaga1, m_spjiage2, m_spjiage3, splb, m_spbz, status); g_sendhead.bsql = 1; g_pMainWnd->ProcessChatMessageRequest2(sql); if (g_bSendOK == 0)return; GetData(); OnSelchangeCOMBOsplb(); m_autoid++; } else//修改 { if (m_oldspid != m_spid) { if (IsExist()) { AfxMessageBox("已有此商品记录,请重新输入!", MB_ICONINFORMATION); return; } } sql.Format("update shangpin set spid='%s',spname='%s',spdanwei='%s',spjiaga1='%s',spjiage2='%s',spjiage3='%s',splb='%s',spbz='%s',hide='%s' where spid='%s' ", m_spid, m_spname, m_spdanwei, m_spjiaga1, m_spjiage2, m_spjiage3, splb, m_spbz, status, (m_oldspid)); g_sendhead.bsql = 1; g_pMainWnd->ProcessChatMessageRequest2(sql); if (g_bSendOK == 0)return; GetData(); OnSelchangeCOMBOsplb(); } OnBUTadd(); } void ShangPin::OnBUTdel() { POSITION pos; pos = m_List1.GetFirstSelectedItemPosition(); if (pos == NULL) { return; } if (AfxMessageBox("确认删除该产品吗?", MB_YESNO | MB_ICONINFORMATION) != IDYES)return; int iItem = m_List1.GetNextSelectedItem(pos); CString id = m_List1.GetItemText(iItem, 0); CString sql; sql.Format("delete from shangpin where spid='%s' ", id); g_sendhead.bsql = 1; g_pMainWnd->ProcessChatMessageRequest2(sql); if (g_bSendOK == 0)return; GetData(); OnSelchangeCOMBOsplb(); } void ShangPin::GetData() { g_sendhead.bsql = 0; g_sendhead.code[0] = 4; g_sendhead.tabcount = 1; g_pMainWnd->ProcessChatMessageRequest2(4); if (g_bSendOK == 0)return; DataToArray(&m_List1array); } BOOL ShangPin::IsExist() { for (int i = 0; i < m_List1array.GetSize(); i++) { if (m_spname == m_List1array.ElementAt(i).ElementAt(1)) { CString str; str.Format("此产品已存在于类别:%s中", m_List1array.ElementAt(i).ElementAt(6)); AfxMessageBox(str, MB_ICONINFORMATION); return 1; } } return 0; } BOOL ShangPin::PreTranslateMessage(MSG* pMsg) { // TODO: Add your specialized code here and/or call the base class try { if (pMsg->message == WM_KEYDOWN) { switch (pMsg->wParam) { case 0x43: // copy if ((GetKeyState(VK_CONTROL) & 0x80)) { GetFocus()->SendMessage(WM_COPY); return TRUE; } break; case 0x56: //Ctrl + V: if ((GetKeyState(VK_CONTROL) & 0x80)) { GetFocus()->SendMessage(WM_PASTE); return TRUE; } break; case 0x58: // cut if ((GetKeyState(VK_CONTROL) & 0x80)) { GetFocus()->SendMessage(WM_CUT); return TRUE; } break; case 0x5A: //undo case 0x59: //redo if ((GetKeyState(VK_CONTROL) & 0x80)) { GetFocus()->SendMessage(WM_UNDO); return TRUE; } break; } } return MyFormView::PreTranslateMessage(pMsg); } catch (...) { } } void ShangPin::AutoId() { UpdateData(); int pos = m_combosplb.GetCurSel(); if (pos == -1)return; CString type; m_combosplb.GetLBText(pos, type); CString strRes1; GetFirstLetter(type, strRes1); int begin = 1; BOOL bFind = 1; while (bFind) { m_spid.Format("%s%03d", strRes1, begin++); for (int i = 0; i < m_List1array.GetSize(); i++) { if (m_spid == m_List1array.ElementAt(i).ElementAt(0)) { break; } } if (i == m_List1array.GetSize())bFind = 0; } UpdateData(false); } void ShangPin::OnRadio1() { // TODO: Add your control notification handler code here OnSelchangeCOMBOsplb(); } void ShangPin::OnRadio2() { // TODO: Add your control notification handler code here OnSelchangeCOMBOsplb(); } void ShangPin::OnRadio9() { // TODO: Add your control notification handler code here OnSelchangeCOMBOsplb(); }