TXSPDlg.cpp 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522
  1. // TXSPDlg.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "ylgl.h"
  5. #include "TXSPDlg.h"
  6. #include "MyMdi.H"
  7. #ifdef _DEBUG
  8. #define new DEBUG_NEW
  9. #undef THIS_FILE
  10. static char THIS_FILE[] = __FILE__;
  11. #endif
  12. /////////////////////////////////////////////////////////////////////////////
  13. // TXSPDlg
  14. IMPLEMENT_DYNCREATE(TXSPDlg, MyFormView)
  15. TXSPDlg::TXSPDlg()
  16. : MyFormView(TXSPDlg::IDD)
  17. {
  18. //{{AFX_DATA_INIT(TXSPDlg)
  19. m_taoxiid = _T("");
  20. m_taoxijiage = _T("");
  21. m_zs = _T("");
  22. //}}AFX_DATA_INIT
  23. }
  24. TXSPDlg::~TXSPDlg()
  25. {
  26. }
  27. void TXSPDlg::DoDataExchange(CDataExchange* pDX)
  28. {
  29. MyFormView::DoDataExchange(pDX);
  30. //{{AFX_DATA_MAP(TXSPDlg)
  31. DDX_Control(pDX, IDC_LIST2, m_List2);
  32. DDX_Control(pDX, IDC_LIST1, m_List1);
  33. DDX_Control(pDX, IDC_STATIC1, m_static1);
  34. DDX_Control(pDX, IDC_COMBOtaoxiname, m_combotaoxiname);
  35. DDX_Text(pDX, IDC_EDITtaoxiid, m_taoxiid);
  36. DDX_Text(pDX, IDC_EDITtaoxijiage, m_taoxijiage);
  37. DDX_Text(pDX, IDC_EDITzs, m_zs);
  38. //}}AFX_DATA_MAP
  39. }
  40. BEGIN_MESSAGE_MAP(TXSPDlg, MyFormView)
  41. //{{AFX_MSG_MAP(TXSPDlg)
  42. ON_BN_CLICKED(IDC_BUTsave, OnBUTsave)
  43. ON_BN_CLICKED(IDC_BUTdel, OnBUTdel)
  44. ON_BN_CLICKED(IDC_BUTclose, OnBUTclose)
  45. ON_CBN_SELCHANGE(IDC_COMBOtaoxiname, OnSelchangeCOMBOtaoxiname)
  46. ON_BN_CLICKED(IDC_BUTspbox, OnBUTspbox)
  47. ON_WM_TIMER()
  48. ON_BN_CLICKED(IDC_BUTsave2, OnBUTsave2)
  49. ON_BN_CLICKED(IDC_BUTdel2, OnBUTdel2)
  50. ON_BN_CLICKED(IDC_BUTspbox2, OnBUTspbox2)
  51. ON_BN_CLICKED(IDC_BUTclose2, OnBUTclose2)
  52. //}}AFX_MSG_MAP
  53. END_MESSAGE_MAP()
  54. /////////////////////////////////////////////////////////////////////////////
  55. // TXSPDlg diagnostics
  56. #ifdef _DEBUG
  57. void TXSPDlg::AssertValid() const
  58. {
  59. MyFormView::AssertValid();
  60. }
  61. void TXSPDlg::Dump(CDumpContext& dc) const
  62. {
  63. MyFormView::Dump(dc);
  64. }
  65. #endif //_DEBUG
  66. /////////////////////////////////////////////////////////////////////////////
  67. // TXSPDlg message handlers
  68. void TXSPDlg::OnInitialUpdate()
  69. {
  70. MyFormView::OnInitialUpdate();
  71. // TODO: Add your specialized code here and/or call the base class
  72. CMyMdi Mdi;
  73. Mdi.SetSubView((CWnd*)GetParent(), (CWnd*)this);
  74. // Here we create the outbar control using the splitter as its parent
  75. // and setting its id to the first pane.
  76. CRect rc2;
  77. GetWindowRect(rc2);
  78. ::MoveWindow(m_hWnd,g_rc.left,g_rc.top,g_rc.Width(),g_rc.Height(),TRUE);
  79. EnumChildWindows(m_hWnd,(WNDENUMPROC)EnumChildProc,0);
  80. m_combotaoxiname.GetWindowRect (rc2);
  81. ScreenToClient(rc2);
  82. rc2.bottom +=200;
  83. m_combotaoxiname.MoveWindow (rc2);
  84. m_static1.SetFont (&g_titlefont);
  85. g_sendhead.bsql=0;
  86. g_sendhead.code[0]=6;
  87. g_sendhead.code[1]=7;
  88. g_sendhead.code[2]=10;
  89. g_sendhead.code[3]=4;
  90. g_sendhead.tabcount=4;
  91. g_pMainWnd->ProcessChatMessageRequest2(6);if(g_bSendOK==0)return;
  92. DataToArray(&m_List1array, &m_List2array, &m_List3array, &m_sparray);
  93. for(int i=0; i<m_List1array.GetSize (); i++)
  94. m_combotaoxiname.AddString (m_List1array.ElementAt (i).ElementAt (1));
  95. m_List1.InitStyle();
  96. m_List1.InsertColumn(0,_T("编号"),LVCFMT_LEFT,80);
  97. m_List1.InsertColumn(1,_T("商品名称"),LVCFMT_LEFT,200);
  98. m_List1.InsertColumn(2,_T("数量"),LVCFMT_LEFT,60);
  99. m_List2.InitStyle();
  100. m_List2.InsertColumn(0,_T("编号"),LVCFMT_LEFT,80);
  101. m_List2.InsertColumn(1,_T("商品名称"),LVCFMT_LEFT,200);
  102. m_List2.InsertColumn(2,_T("数量"),LVCFMT_LEFT,60);
  103. }
  104. void TXSPDlg::OnSelchangeCOMBOtaoxiname()
  105. {
  106. // TODO: Add your control notification handler code here
  107. int pos=m_combotaoxiname.GetCurSel ();
  108. if(pos==-1)return;
  109. m_taoxiid = m_List1array.ElementAt (pos).ElementAt (0);
  110. m_taoxijiage = m_List1array.ElementAt (pos).ElementAt (2);
  111. m_zs = m_List1array.ElementAt (pos).ElementAt (3);
  112. UpdateData(false);
  113. FillGrid();
  114. }
  115. void TXSPDlg::FillGrid()
  116. {
  117. m_List1.DeleteAllItems ();
  118. int pos=0;
  119. int i = 0;
  120. for(/*int*/ i=0; i<m_List2array.GetSize (); i++)
  121. {
  122. if(m_List2array.ElementAt (i).ElementAt (0)!=m_taoxiid)continue;
  123. m_List1.InsertItem(pos, m_List2array.ElementAt (i).ElementAt (1));
  124. m_List1.SetItemText(pos,1, GetSPNameFromId(m_List2array.ElementAt (i).ElementAt (1)));
  125. m_List1.SetItemText(pos,2, m_List2array.ElementAt (i).ElementAt (2));
  126. pos++;
  127. }
  128. //#ifndef MODERN_VERSION
  129. #if 0
  130. for( i=0; i<m_List3array.GetSize (); i++)
  131. {
  132. if(m_List3array.ElementAt (i).ElementAt (0)!=m_taoxiid)continue;
  133. m_List1.InsertItem(pos, m_List3array.ElementAt (i).ElementAt (1));
  134. m_List1.SetItemText(pos,1, GetSPNameFromId(m_List3array.ElementAt (i).ElementAt (1)));
  135. m_List1.SetItemText(pos,2, m_List3array.ElementAt (i).ElementAt (2));
  136. pos++;
  137. }
  138. #else
  139. m_List2.DeleteAllItems ();
  140. pos=0;
  141. for( i=0; i<m_List3array.GetSize (); i++)
  142. {
  143. if(m_List3array.ElementAt (i).ElementAt (0)!=m_taoxiid)continue;
  144. m_List2.InsertItem(pos, m_List3array.ElementAt (i).ElementAt (1));
  145. m_List2.SetItemText(pos,1, GetSPNameFromId(m_List3array.ElementAt (i).ElementAt (1)));
  146. m_List2.SetItemText(pos,2, m_List3array.ElementAt (i).ElementAt (2));
  147. pos++;
  148. }
  149. #endif
  150. }
  151. CString TXSPDlg::GetSPNameFromId(CString id)
  152. {
  153. int i = 0;
  154. for(/*int*/ i=0; i<m_sparray.GetSize (); i++)
  155. {
  156. if(id==m_sparray.ElementAt (i).ElementAt (0))
  157. return m_sparray.ElementAt (i).ElementAt (1);
  158. }
  159. id.TrimLeft ("0");
  160. for( i=0; i<m_sparray.GetSize (); i++)
  161. {
  162. if(id==m_sparray.ElementAt (i).ElementAt (0))
  163. return m_sparray.ElementAt (i).ElementAt (1);
  164. }
  165. return "";
  166. }
  167. BOOL TXSPDlg::PreTranslateMessage(MSG* pMsg)
  168. {
  169. // TODO: Add your specialized code here and/or call the base class
  170. if(pMsg->message==WM_KEYDOWN)
  171. {
  172. switch( pMsg->wParam )
  173. {
  174. case 0x43: // copy
  175. if ( ( GetKeyState( VK_CONTROL ) & 0x80 ) )
  176. {
  177. GetFocus()->SendMessage(WM_COPY);
  178. return TRUE;
  179. }
  180. break;
  181. case 0x56: //Ctrl + V:
  182. if ( ( GetKeyState( VK_CONTROL ) & 0x80 ) )
  183. {
  184. GetFocus()->SendMessage(WM_PASTE);
  185. return TRUE;
  186. }
  187. break;
  188. case 0x58: // cut
  189. if ( ( GetKeyState( VK_CONTROL ) & 0x80 ) )
  190. {
  191. GetFocus()->SendMessage(WM_CUT);
  192. return TRUE;
  193. }
  194. break;
  195. case 0x5A: //undo
  196. case 0x59: //redo
  197. if ( ( GetKeyState( VK_CONTROL ) & 0x80 ) )
  198. {
  199. GetFocus()->SendMessage(WM_UNDO);
  200. return TRUE;
  201. }
  202. break;
  203. }
  204. }
  205. else if(pMsg->message==WM_LBUTTONDBLCLK)
  206. {
  207. if(0)
  208. {//list1
  209. CPoint pt;
  210. CRect rc,rc2;
  211. ::GetCursorPos (&pt);
  212. m_List1.GetWindowRect (rc2);
  213. if(rc2.PtInRect (pt)==0) return MyFormView::PreTranslateMessage(pMsg);
  214. pt.x-=rc2.left ;
  215. pt.y-=rc2.top ;
  216. POSITION pos;
  217. pos=m_List1.GetFirstSelectedItemPosition();
  218. if(pos==NULL)return 1;
  219. int iItem=m_List1.GetNextSelectedItem(pos);
  220. m_List1.GetSubItemRect( iItem, 2, LVIR_BOUNDS, rc);
  221. if(rc.PtInRect (pt))
  222. return MyFormView::PreTranslateMessage(pMsg);
  223. else
  224. return 1;
  225. }
  226. }
  227. return MyFormView::PreTranslateMessage(pMsg);
  228. }
  229. void TXSPDlg::SetSPName1()
  230. {
  231. for(int i=0; i<m_List1.GetItemCount (); i++)
  232. {
  233. m_List1.SetItemText(i,1, GetSPNameFromId(m_List1.GetItemText (i, 0)));
  234. }
  235. }
  236. void TXSPDlg::SetSPName2()
  237. {
  238. for(int i=0; i<m_List2.GetItemCount (); i++)
  239. {
  240. m_List2.SetItemText(i,1, GetSPNameFromId(m_List2.GetItemText (i, 0)));
  241. }
  242. }
  243. void TXSPDlg::OnTimer(UINT nIDEvent)
  244. {
  245. // TODO: Add your message handler code here and/or call default
  246. if(nIDEvent==1)
  247. {
  248. KillTimer(nIDEvent);
  249. SetSPName1();
  250. }
  251. else if(nIDEvent==2)
  252. {
  253. KillTimer(nIDEvent);
  254. SetSPName2();
  255. }
  256. }
  257. void TXSPDlg::OnBUTsave()
  258. {
  259. // TODO: Add your control notification handler code here
  260. int pos=m_combotaoxiname.GetCurSel ();
  261. if(pos==-1)return;
  262. CArray<CStringArray, CStringArray>sparray;
  263. sparray.SetSize(m_List1.GetItemCount ());
  264. int realcount=0;
  265. for(int i=0; i<m_List1.GetItemCount (); i++)
  266. {
  267. if(m_List1.GetItemText (i, 0).IsEmpty ())continue;
  268. sparray.ElementAt (realcount).Add ( m_List1array.ElementAt (pos).ElementAt (0) );
  269. sparray.ElementAt (realcount).Add ( m_List1.GetItemText (i, 0) );
  270. sparray.ElementAt (realcount).Add ( m_List1.GetItemText (i, 2) );
  271. realcount++;
  272. }
  273. sparray.SetSize(realcount);
  274. if(realcount==0)
  275. {
  276. sparray.SetSize(1);
  277. sparray.ElementAt (0).Add (m_List1array.ElementAt (pos).ElementAt (0));
  278. }
  279. CMemFile memfile;
  280. CArchive ar(&memfile, CArchive::store);
  281. for(int ii=0; ii<sparray.GetSize (); ii++)
  282. {
  283. sparray.ElementAt (ii).Serialize (ar);
  284. }
  285. ar.Close();
  286. int length=memfile.GetLength ();
  287. BYTE *pData = memfile.Detach();
  288. int size=sparray.GetSize ();
  289. BYTE *pData2=new BYTE[length+sizeof(int)];
  290. memcpy(pData2, pData, length);
  291. memcpy(pData2+length, &size, sizeof(int));
  292. delete []pData;
  293. length+=sizeof(int);
  294. g_nSendCode=1;
  295. g_pMainWnd->ProcessChatMessageRequest2(pData2, length);
  296. g_nSendCode=0;
  297. delete []pData2;
  298. if(g_bSendOK==0)return;
  299. g_sendhead.bsql=0;
  300. g_sendhead.code[0]=7;
  301. g_sendhead.code[1]=10;
  302. g_sendhead.tabcount=2;
  303. g_pMainWnd->ProcessChatMessageRequest2(7);if(g_bSendOK==0)return;
  304. DataToArray(&m_List2array, &m_List3array);
  305. AfxMessageBox("保存成功!", MB_ICONINFORMATION);
  306. }
  307. void TXSPDlg::OnBUTdel()
  308. {
  309. // TODO: Add your control notification handler code here
  310. POSITION pos;
  311. pos=m_List1.GetFirstSelectedItemPosition();
  312. if(pos==NULL)
  313. {
  314. AfxMessageBox("请先选中您要删除的项目!", MB_ICONINFORMATION);
  315. return;
  316. }
  317. int iItem=m_List1.GetNextSelectedItem(pos);
  318. m_List1.DeleteItem (iItem);
  319. int count=m_List1.GetItemCount ();
  320. if(count==0)return;
  321. if(iItem==count)
  322. iItem=0;
  323. m_List1.SetItemState (iItem, LVIS_SELECTED, LVIS_SELECTED);
  324. }
  325. void TXSPDlg::OnBUTspbox()
  326. {
  327. // TODO: Add your control notification handler code here
  328. SPBox dlg;
  329. if(dlg.DoModal ()!=IDOK)return;
  330. for(int a=0; a<dlg.m_spidarray .GetSize (); a++)
  331. {
  332. dlg.m_spid=dlg.m_spidarray.ElementAt (a);
  333. dlg.m_spname=dlg.m_spnamearray.ElementAt (a);
  334. dlg.m_lb=dlg.m_lbarray.ElementAt (a);
  335. int pos=m_List1.GetItemCount ();
  336. if(pos)
  337. {
  338. if(m_List1.GetItemText (pos-1, 0).IsEmpty ()&&m_List1.GetItemText (pos-1, 1).IsEmpty ()&&m_List1.GetItemText (pos-1, 2).IsEmpty ())
  339. {
  340. pos--;
  341. m_List1.SetItemText(pos,0, dlg.m_spid);
  342. m_List1.SetItemText(pos,1, GetSPNameFromId(dlg.m_spid));
  343. }
  344. else
  345. {
  346. m_List1.InsertItem(pos, dlg.m_spid);
  347. m_List1.SetItemText(pos,1, GetSPNameFromId(dlg.m_spid));
  348. m_List1.SetItemText(pos, 2, "1");
  349. }
  350. }
  351. else
  352. {
  353. m_List1.InsertItem(pos, dlg.m_spid);
  354. m_List1.SetItemText(pos,1, GetSPNameFromId(dlg.m_spid));
  355. m_List1.SetItemText(pos, 2, "1");
  356. }
  357. }
  358. }
  359. void TXSPDlg::OnBUTclose()
  360. {
  361. // TODO: Add your control notification handler code here
  362. GetParent()->SendMessage(WM_CLOSE);
  363. }
  364. void TXSPDlg::OnBUTsave2()
  365. {
  366. // TODO: Add your control notification handler code here
  367. int pos=m_combotaoxiname.GetCurSel ();
  368. if(pos==-1)return;
  369. CArray<CStringArray, CStringArray>sparray;
  370. sparray.SetSize(m_List2.GetItemCount ());
  371. int realcount=0;
  372. for(int i=0; i<m_List2.GetItemCount (); i++)
  373. {
  374. if(m_List2.GetItemText (i, 0).IsEmpty ())continue;
  375. sparray.ElementAt (realcount).Add ( m_List1array.ElementAt (pos).ElementAt (0) );
  376. sparray.ElementAt (realcount).Add ( m_List2.GetItemText (i, 0) );
  377. sparray.ElementAt (realcount).Add ( m_List2.GetItemText (i, 2) );
  378. realcount++;
  379. }
  380. sparray.SetSize(realcount);
  381. if(realcount==0)
  382. {
  383. sparray.SetSize(1);
  384. sparray.ElementAt (0).Add (m_List1array.ElementAt (pos).ElementAt (0));
  385. }
  386. CMemFile memfile;
  387. CArchive ar(&memfile, CArchive::store);
  388. for(int ii=0; ii<sparray.GetSize (); ii++)
  389. {
  390. sparray.ElementAt (ii).Serialize (ar);
  391. }
  392. ar.Close();
  393. int length=memfile.GetLength ();
  394. BYTE *pData = memfile.Detach();
  395. int size=sparray.GetSize ();
  396. BYTE *pData2=new BYTE[length+sizeof(int)];
  397. memcpy(pData2, pData, length);
  398. memcpy(pData2+length, &size, sizeof(int));
  399. delete []pData;
  400. length+=sizeof(int);
  401. g_nSendCode=2;
  402. g_pMainWnd->ProcessChatMessageRequest2(pData2, length);
  403. g_nSendCode=0;
  404. delete []pData2;
  405. if(g_bSendOK==0)return;
  406. g_sendhead.bsql=0;
  407. g_sendhead.code[0]=7;
  408. g_sendhead.code[1]=10;
  409. g_sendhead.tabcount=2;
  410. g_pMainWnd->ProcessChatMessageRequest2(7);if(g_bSendOK==0)return;
  411. DataToArray(&m_List2array, &m_List3array);
  412. AfxMessageBox("保存成功!", MB_ICONINFORMATION);
  413. }
  414. void TXSPDlg::OnBUTdel2()
  415. {
  416. // TODO: Add your control notification handler code here
  417. POSITION pos;
  418. pos=m_List2.GetFirstSelectedItemPosition();
  419. if(pos==NULL)
  420. {
  421. AfxMessageBox("请先选中您要删除的项目!", MB_ICONINFORMATION);
  422. return;
  423. }
  424. int iItem=m_List2.GetNextSelectedItem(pos);
  425. m_List2.DeleteItem (iItem);
  426. int count=m_List2.GetItemCount ();
  427. if(count==0)return;
  428. if(iItem==count)
  429. iItem=0;
  430. m_List2.SetItemState (iItem, LVIS_SELECTED, LVIS_SELECTED);
  431. }
  432. void TXSPDlg::OnBUTspbox2()
  433. {
  434. // TODO: Add your control notification handler code here
  435. SPBox dlg;
  436. dlg.m_mode=1;
  437. if(dlg.DoModal ()!=IDOK)return;
  438. for(int a=0; a<dlg.m_spidarray .GetSize (); a++)
  439. {
  440. dlg.m_spid=dlg.m_spidarray.ElementAt (a);
  441. dlg.m_spname=dlg.m_spnamearray.ElementAt (a);
  442. dlg.m_lb=dlg.m_lbarray.ElementAt (a);
  443. int pos=m_List2.GetItemCount ();
  444. if(pos)
  445. {
  446. if(m_List2.GetItemText (pos-1, 0).IsEmpty ()&&m_List2.GetItemText (pos-1, 1).IsEmpty ()&&m_List2.GetItemText (pos-1, 2).IsEmpty ())
  447. {
  448. pos--;
  449. m_List2.SetItemText(pos,0, dlg.m_spid);
  450. m_List2.SetItemText(pos,1, GetSPNameFromId(dlg.m_spid));
  451. m_List2.SetItemText(pos,2, "1");
  452. }
  453. else
  454. {
  455. m_List2.InsertItem(pos, dlg.m_spid);
  456. m_List2.SetItemText(pos,1, GetSPNameFromId(dlg.m_spid));
  457. m_List2.SetItemText(pos,2, "1");
  458. }
  459. }
  460. else
  461. {
  462. m_List2.InsertItem(pos, dlg.m_spid);
  463. m_List2.SetItemText(pos,1, GetSPNameFromId(dlg.m_spid));
  464. m_List2.SetItemText(pos,2, "1");
  465. }
  466. }
  467. }
  468. void TXSPDlg::OnBUTclose2()
  469. {
  470. // TODO: Add your control notification handler code here
  471. GetParent()->SendMessage(WM_CLOSE);
  472. }