// DataDictView.cpp: 实现文件 // #include "pch.h" #include "DMS.h" #include "resource.h" #include "DmsDoc.h" #include "DictView.h" #include "afxdialogex.h" #include "DictItem.h" #include "CppSQLite3.h" #include "DictManager.h" #include "Dict.h" // DictView 对话框 IMPLEMENT_DYNAMIC(DictView, CDialogEx) DictView::DictView(CWnd* pParent /*=nullptr*/) : CDialogEx(IDD_DLG_DICT_VIEW, pParent) { } DictView::~DictView() { } void DictView::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); DDX_Control(pDX, IDC_LIST_DICT, m_ListCtrl_Dict); } // 获取文档对象 CDmsDoc *DictView::GetDocument() { CFrameWnd *pFrm = (CFrameWnd *)(AfxGetApp()->m_pMainWnd); ASSERT(pFrm); CView *pView = pFrm->GetActiveView(); CDmsDoc *pDoc = (CDmsDoc *)(pView->GetDocument()); ASSERT(pDoc->IsKindOf(RUNTIME_CLASS(CDmsDoc))); return pDoc; } BEGIN_MESSAGE_MAP(DictView, CDialogEx) ON_BN_CLICKED(IDC_BTN_DICT_ADD, &DictView::OnBnClickedBtnDictAdd) ON_NOTIFY(NM_DBLCLK, IDC_LIST_DICT, &DictView::OnNMDblclkListDict) END_MESSAGE_MAP() // DataDictView 消息处理程序 /************************************************************************************************** 函 数 名 :OnInitDialog 功能描述 :初始化UI数据 输入参数 :无 输出参数 :无 返 回 值 :void **************************************************************************************************/ BOOL DictView::OnInitDialog() { CDialogEx::OnInitDialog(); //创建图标 HICON icon; //加载图标 icon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); SetIcon(icon, true); SetIcon(icon, false); this->InitDictList(); return TRUE; // return TRUE unless you set the focus to a control // 异常: OCX 属性页应返回 FALSE } /************************************************************************************************** 函 数 名 :InitEquipTypeList 功能描述 :初始化设备型号下拉选择 输入参数 :无 输出参数 :无 返 回 值 :void **************************************************************************************************/ void DictView::InitDictList() { int iCount; CHeaderCtrl *pHeadCtrl = m_ListCtrl_Dict.GetHeaderCtrl(); if (pHeadCtrl != NULL) { iCount = pHeadCtrl->GetItemCount(); for (int i = 0; i < iCount; i++) { m_ListCtrl_Dict.DeleteColumn(0); } m_ListCtrl_Dict.DeleteAllItems(); } m_ListCtrl_Dict.SetExtendedStyle(m_ListCtrl_Dict.GetExtendedStyle() | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES); m_ListCtrl_Dict.InsertColumn(0, _T("序号"), LVCFMT_CENTER, 60); LVCOLUMN lvc; lvc.mask = LVCF_FMT; m_ListCtrl_Dict.GetColumn(0, &lvc); lvc.fmt &= ~LVCFMT_JUSTIFYMASK; lvc.fmt |= LVCFMT_CENTER; m_ListCtrl_Dict.SetColumn(0, &lvc); m_ListCtrl_Dict.InsertColumn(1, _T("编码"), LVCFMT_CENTER, 200); m_ListCtrl_Dict.InsertColumn(2, _T("标题"), LVCFMT_CENTER, 200); m_ListCtrl_Dict.InsertColumn(3, _T("备注"), LVCFMT_LEFT, 265); int i = 1; CString szNo; CString szCode; CString szTitle; CString szRemark; CDmsDoc *pDoc = this->GetDocument(); DictManager *pManager = pDoc->GetDictManager(); ASSERT(pManager != NULL); CppSQLite3Query q = pManager->Query(); while (!q.eof()) { szNo.Format("%d", i); int nItem = m_ListCtrl_Dict.InsertItem(i, (LPCTSTR)szNo); szCode = q.getStringField("item_code"); m_ListCtrl_Dict.SetItemText(nItem, 1, (LPCTSTR)szCode); szTitle = q.getStringField("item_title"); m_ListCtrl_Dict.SetItemText(nItem, 2, (LPCTSTR)szTitle); szRemark = q.getStringField("item_remark"); m_ListCtrl_Dict.SetItemText(nItem, 3, (LPCTSTR)szRemark); i++; q.nextRow(); } q.finalize(); } /************************************************************************************************** 函 数 名 :OnBnClickedBtnDictAdd 功能描述 :事件处理-新增 输入参数 :无 输出参数 :无 返 回 值 :void **************************************************************************************************/ void DictView::OnBnClickedBtnDictAdd() { DictItem dlg(this); if (dlg.DoModal() == IDOK) { CDmsDoc *pDoc = this->GetDocument(); DictManager *pManager = pDoc->GetDictManager(); Dict dict; dict.SetItemCode(dlg.m_szItemCode); dict.SetItemTitle(dlg.m_szItemTitle); dict.SetItemRemark(dlg.m_szItemRemark); BOOL bRet = pManager->Add(dict); if (bRet) { this->InitDictList(); pDoc->UpdateAllViews(NULL); } } } /************************************************************************************************** 函 数 名 :OnNMDblclkListEquipment 功能描述 :事件处理-点击列表行 输入参数 :无 输出参数 :无 返 回 值 :void **************************************************************************************************/ void DictView::OnNMDblclkListDict(NMHDR *pNMHDR, LRESULT *pResult) { LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast(pNMHDR); int nItem = pNMItemActivate->iItem; if (nItem >= 0 && nItem < m_ListCtrl_Dict.GetItemCount()) { CString szCode = m_ListCtrl_Dict.GetItemText(nItem, 1); CString szTitle = m_ListCtrl_Dict.GetItemText(nItem, 2); CString szRemark = m_ListCtrl_Dict.GetItemText(nItem, 3); // 编辑型号 DictItem dlg(this, 2, szCode, szTitle, szRemark); INT_PTR iRet = dlg.DoModal(); if (iRet == IDOK) { Dict dict; dict.SetItemCode(dlg.m_szItemCode); dict.SetItemTitle(dlg.m_szItemTitle); dict.SetItemRemark(dlg.m_szItemRemark); CDmsDoc *pDoc = this->GetDocument(); DictManager *pManager = pDoc->GetDictManager(); BOOL bRet = pManager->Update(dict); if (bRet) { this->InitDictList(); pDoc->UpdateAllViews(NULL); } } else if (iRet == 101) { // 删除型号 CDmsDoc *pDoc = this->GetDocument(); DictManager *pManager = pDoc->GetDictManager(); BOOL bRet = pManager->Delete(dlg.m_szItemCode); if (bRet) { this->InitDictList(); pDoc->UpdateAllViews(NULL); } } } *pResult = 0; }