DictView.cpp 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  1. // DataDictView.cpp: 实现文件
  2. //
  3. #include "pch.h"
  4. #include "DMS.h"
  5. #include "resource.h"
  6. #include "DmsDoc.h"
  7. #include "DictView.h"
  8. #include "afxdialogex.h"
  9. #include "DictItem.h"
  10. #include "CppSQLite3.h"
  11. #include "DictManager.h"
  12. #include "Dict.h"
  13. // DictView 对话框
  14. IMPLEMENT_DYNAMIC(DictView, CDialogEx)
  15. DictView::DictView(CWnd* pParent /*=nullptr*/)
  16. : CDialogEx(IDD_DLG_DICT_VIEW, pParent)
  17. {
  18. }
  19. DictView::~DictView()
  20. {
  21. }
  22. void DictView::DoDataExchange(CDataExchange* pDX)
  23. {
  24. CDialogEx::DoDataExchange(pDX);
  25. DDX_Control(pDX, IDC_LIST_DICT, m_ListCtrl_Dict);
  26. }
  27. // 获取文档对象
  28. CDmsDoc *DictView::GetDocument()
  29. {
  30. CFrameWnd *pFrm = (CFrameWnd *)(AfxGetApp()->m_pMainWnd);
  31. ASSERT(pFrm);
  32. CView *pView = pFrm->GetActiveView();
  33. CDmsDoc *pDoc = (CDmsDoc *)(pView->GetDocument());
  34. ASSERT(pDoc->IsKindOf(RUNTIME_CLASS(CDmsDoc)));
  35. return pDoc;
  36. }
  37. BEGIN_MESSAGE_MAP(DictView, CDialogEx)
  38. ON_BN_CLICKED(IDC_BTN_DICT_ADD, &DictView::OnBnClickedBtnDictAdd)
  39. ON_NOTIFY(NM_DBLCLK, IDC_LIST_DICT, &DictView::OnNMDblclkListDict)
  40. END_MESSAGE_MAP()
  41. // DataDictView 消息处理程序
  42. /**************************************************************************************************
  43. 函 数 名 :OnInitDialog
  44. 功能描述 :初始化UI数据
  45. 输入参数 :无
  46. 输出参数 :无
  47. 返 回 值 :void
  48. **************************************************************************************************/
  49. BOOL DictView::OnInitDialog()
  50. {
  51. CDialogEx::OnInitDialog();
  52. //创建图标
  53. HICON icon;
  54. //加载图标
  55. icon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
  56. SetIcon(icon, true);
  57. SetIcon(icon, false);
  58. this->InitDictList();
  59. return TRUE; // return TRUE unless you set the focus to a control
  60. // 异常: OCX 属性页应返回 FALSE
  61. }
  62. /**************************************************************************************************
  63. 函 数 名 :InitEquipTypeList
  64. 功能描述 :初始化设备型号下拉选择
  65. 输入参数 :无
  66. 输出参数 :无
  67. 返 回 值 :void
  68. **************************************************************************************************/
  69. void DictView::InitDictList()
  70. {
  71. int iCount;
  72. CHeaderCtrl *pHeadCtrl = m_ListCtrl_Dict.GetHeaderCtrl();
  73. if (pHeadCtrl != NULL)
  74. {
  75. iCount = pHeadCtrl->GetItemCount();
  76. for (int i = 0; i < iCount; i++)
  77. {
  78. m_ListCtrl_Dict.DeleteColumn(0);
  79. }
  80. m_ListCtrl_Dict.DeleteAllItems();
  81. }
  82. m_ListCtrl_Dict.SetExtendedStyle(m_ListCtrl_Dict.GetExtendedStyle() | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
  83. m_ListCtrl_Dict.InsertColumn(0, _T("序号"), LVCFMT_CENTER, 60);
  84. LVCOLUMN lvc;
  85. lvc.mask = LVCF_FMT;
  86. m_ListCtrl_Dict.GetColumn(0, &lvc);
  87. lvc.fmt &= ~LVCFMT_JUSTIFYMASK;
  88. lvc.fmt |= LVCFMT_CENTER;
  89. m_ListCtrl_Dict.SetColumn(0, &lvc);
  90. m_ListCtrl_Dict.InsertColumn(1, _T("编码"), LVCFMT_CENTER, 200);
  91. m_ListCtrl_Dict.InsertColumn(2, _T("标题"), LVCFMT_CENTER, 200);
  92. m_ListCtrl_Dict.InsertColumn(3, _T("备注"), LVCFMT_LEFT, 265);
  93. int i = 1;
  94. CString szNo;
  95. CString szCode;
  96. CString szTitle;
  97. CString szRemark;
  98. CDmsDoc *pDoc = this->GetDocument();
  99. DictManager *pManager = pDoc->GetDictManager();
  100. ASSERT(pManager != NULL);
  101. CppSQLite3Query q = pManager->Query();
  102. while (!q.eof()) {
  103. szNo.Format("%d", i);
  104. int nItem = m_ListCtrl_Dict.InsertItem(i, (LPCTSTR)szNo);
  105. szCode = q.getStringField("item_code");
  106. m_ListCtrl_Dict.SetItemText(nItem, 1, (LPCTSTR)szCode);
  107. szTitle = q.getStringField("item_title");
  108. m_ListCtrl_Dict.SetItemText(nItem, 2, (LPCTSTR)szTitle);
  109. szRemark = q.getStringField("item_remark");
  110. m_ListCtrl_Dict.SetItemText(nItem, 3, (LPCTSTR)szRemark);
  111. i++;
  112. q.nextRow();
  113. }
  114. q.finalize();
  115. }
  116. /**************************************************************************************************
  117. 函 数 名 :OnBnClickedBtnDictAdd
  118. 功能描述 :事件处理-新增
  119. 输入参数 :无
  120. 输出参数 :无
  121. 返 回 值 :void
  122. **************************************************************************************************/
  123. void DictView::OnBnClickedBtnDictAdd()
  124. {
  125. DictItem dlg(this);
  126. if (dlg.DoModal() == IDOK) {
  127. CDmsDoc *pDoc = this->GetDocument();
  128. DictManager *pManager = pDoc->GetDictManager();
  129. Dict dict;
  130. dict.SetItemCode(dlg.m_szItemCode);
  131. dict.SetItemTitle(dlg.m_szItemTitle);
  132. dict.SetItemRemark(dlg.m_szItemRemark);
  133. BOOL bRet = pManager->Add(dict);
  134. if (bRet) {
  135. this->InitDictList();
  136. pDoc->UpdateAllViews(NULL);
  137. }
  138. }
  139. }
  140. /**************************************************************************************************
  141. 函 数 名 :OnNMDblclkListEquipment
  142. 功能描述 :事件处理-点击列表行
  143. 输入参数 :无
  144. 输出参数 :无
  145. 返 回 值 :void
  146. **************************************************************************************************/
  147. void DictView::OnNMDblclkListDict(NMHDR *pNMHDR, LRESULT *pResult)
  148. {
  149. LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
  150. int nItem = pNMItemActivate->iItem;
  151. if (nItem >= 0 && nItem < m_ListCtrl_Dict.GetItemCount())
  152. {
  153. CString szCode = m_ListCtrl_Dict.GetItemText(nItem, 1);
  154. CString szTitle = m_ListCtrl_Dict.GetItemText(nItem, 2);
  155. CString szRemark = m_ListCtrl_Dict.GetItemText(nItem, 3);
  156. // 编辑型号
  157. DictItem dlg(this, 2, szCode, szTitle, szRemark);
  158. INT_PTR iRet = dlg.DoModal();
  159. if (iRet == IDOK)
  160. {
  161. Dict dict;
  162. dict.SetItemCode(dlg.m_szItemCode);
  163. dict.SetItemTitle(dlg.m_szItemTitle);
  164. dict.SetItemRemark(dlg.m_szItemRemark);
  165. CDmsDoc *pDoc = this->GetDocument();
  166. DictManager *pManager = pDoc->GetDictManager();
  167. BOOL bRet = pManager->Update(dict);
  168. if (bRet) {
  169. this->InitDictList();
  170. pDoc->UpdateAllViews(NULL);
  171. }
  172. }
  173. else if (iRet == 101) {
  174. // 删除型号
  175. CDmsDoc *pDoc = this->GetDocument();
  176. DictManager *pManager = pDoc->GetDictManager();
  177. BOOL bRet = pManager->Delete(dlg.m_szItemCode);
  178. if (bRet) {
  179. this->InitDictList();
  180. pDoc->UpdateAllViews(NULL);
  181. }
  182. }
  183. }
  184. *pResult = 0;
  185. }