| SourceCode/Bond/Servo/PageRecipe.cpp | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| SourceCode/Bond/Servo/PageRecipe.h | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| SourceCode/Bond/Servo/SECSRuntimeManager.cpp | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| SourceCode/Bond/Servo/SECSRuntimeManager.h | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| SourceCode/Bond/Servo/Servo.rc | 补丁 | 查看 | 原始文档 | blame | 历史 | |
| SourceCode/Bond/Servo/Servo.vcxproj | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| SourceCode/Bond/Servo/Servo.vcxproj.filters | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| SourceCode/Bond/Servo/ServoDlg.cpp | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| SourceCode/Bond/Servo/ServoDlg.h | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| SourceCode/Bond/Servo/resource.h | 补丁 | 查看 | 原始文档 | blame | 历史 |
SourceCode/Bond/Servo/PageRecipe.cpp
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,183 @@ // CPageRecipe.cpp: å®ç°æä»¶ // #include "stdafx.h" #include "Servo.h" #include "afxdialogex.h" #include "PageRecipe.h" #include "SECSRuntimeManager.h" // CPageRecipe å¯¹è¯æ¡ IMPLEMENT_DYNAMIC(CPageRecipe, CDialogEx) CPageRecipe::CPageRecipe(CWnd* pParent /*=nullptr*/) : CDialogEx(IDD_PAGE_RECIPE, pParent) { } CPageRecipe::~CPageRecipe() { } void CPageRecipe::FillDataToListCtrl(const std::vector<std::string>& vecData) { CListCtrl* pListCtrl = (CListCtrl*)GetDlgItem(IDC_LIST_PPID); if (pListCtrl == nullptr || pListCtrl->m_hWnd == nullptr) { return; } // æ¸ ç©ºå½åCListCtrlä¸çææé¡¹ pListCtrl->DeleteAllItems(); // éåæ°æ®å¹¶æå ¥å°CListCtrlä¸ int nIndex = 0; for (const auto& row : vecData) { int nNewItem = pListCtrl->InsertItem(nIndex, _T("")); CString str; str.Format(_T("%d"), nIndex++); pListCtrl->SetItemText(nNewItem, 1, str); // Recipe No str.Format(_T("%s"), row.c_str()); pListCtrl->SetItemText(nNewItem, 2, str); // PPID } // è·ååæ° int nColCount = pListCtrl->GetHeaderCtrl()->GetItemCount(); pListCtrl->SetColumnWidth(nColCount - 1, LVSCW_AUTOSIZE_USEHEADER); } void CPageRecipe::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); DDX_Control(pDX, IDC_LIST_PPID, m_listPPID); DDX_Control(pDX, IDC_EDIT_PPID, m_editPPID); } BEGIN_MESSAGE_MAP(CPageRecipe, CDialogEx) ON_BN_CLICKED(IDC_BUTTON_SEARCH, &CPageRecipe::OnBnClickedButtonSearch) ON_BN_CLICKED(IDC_BUTTON_MODIFY, &CPageRecipe::OnBnClickedButtonModify) ON_BN_CLICKED(IDC_BUTTON_DELETE, &CPageRecipe::OnBnClickedButtonDelete) ON_BN_CLICKED(IDC_BUTTON_DELETE_ALL, &CPageRecipe::OnBnClickedButtonDeleteAll) ON_BN_CLICKED(IDC_BUTTON_SAVE, &CPageRecipe::OnBnClickedButtonSave) ON_BN_CLICKED(IDC_BUTTON_REFRESH, &CPageRecipe::OnBnClickedButtonRefresh) ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST_PPID, &CPageRecipe::OnLvnItemChangedListPPID) END_MESSAGE_MAP() // CPageRecipe æ¶æ¯å¤çç¨åº BOOL CPageRecipe::OnInitDialog() { CDialogEx::OnInitDialog(); // TODO: 卿¤æ·»å é¢å¤çåå§å CListCtrl* pListCtrl = (CListCtrl*)GetDlgItem(IDC_LIST_PPID); DWORD dwStyle = pListCtrl->GetExtendedStyle(); dwStyle |= LVS_EX_FULLROWSELECT; dwStyle |= LVS_EX_GRIDLINES; pListCtrl->SetExtendedStyle(dwStyle); HIMAGELIST imageList = ImageList_Create(24, 24, ILC_COLOR24, 1, 1); ListView_SetImageList(pListCtrl->GetSafeHwnd(), imageList, LVSIL_SMALL); pListCtrl->InsertColumn(0, _T(""), LVCFMT_RIGHT, 0); pListCtrl->InsertColumn(1, _T("Recipe No"), LVCFMT_LEFT, 100); pListCtrl->InsertColumn(2, _T("PPID"), LVCFMT_LEFT, 100); pListCtrl->SetColumnWidth(2, LVSCW_AUTOSIZE_USEHEADER); // è·åæææ°æ® auto vecData = SECSRuntimeManager::getInstance().getAllPPID(); FillDataToListCtrl(vecData); return TRUE; // return TRUE unless you set the focus to a control // å¼å¸¸: OCX 屿§é¡µåºè¿å FALSE } void CPageRecipe::OnBnClickedButtonSearch() { // TODO: 卿¤æ·»å æ§ä»¶éç¥å¤çç¨åºä»£ç CString strInput; m_editPPID.GetWindowText(strInput); int nCount = m_listPPID.GetItemCount(); for (int i = 0; i < nCount; ++i) { CString strItemText = m_listPPID.GetItemText(i, 2); // 第2å为PPID if (strItemText == strInput) { m_listPPID.SetItemState(i, LVIS_SELECTED, LVIS_SELECTED); m_listPPID.EnsureVisible(i, FALSE); break; } } } void CPageRecipe::OnBnClickedButtonModify() { // TODO: 卿¤æ·»å æ§ä»¶éç¥å¤çç¨åºä»£ç POSITION pos = m_listPPID.GetFirstSelectedItemPosition(); if (!pos) return; int nSel = m_listPPID.GetNextSelectedItem(pos); CString strNewPPID; m_editPPID.GetWindowText(strNewPPID); m_listPPID.SetItemText(nSel, 2, strNewPPID); } void CPageRecipe::OnBnClickedButtonDelete() { // TODO: 卿¤æ·»å æ§ä»¶éç¥å¤çç¨åºä»£ç POSITION pos = m_listPPID.GetFirstSelectedItemPosition(); if (!pos) return; int nSel = m_listPPID.GetNextSelectedItem(pos); m_listPPID.SetItemText(nSel, 2, _T("")); } void CPageRecipe::OnBnClickedButtonDeleteAll() { // TODO: 卿¤æ·»å æ§ä»¶éç¥å¤çç¨åºä»£ç int nCount = m_listPPID.GetItemCount(); for (int i = 0; i < nCount; ++i) { m_listPPID.SetItemText(i, 2, _T("")); } } void CPageRecipe::OnBnClickedButtonSave() { // TODO: 卿¤æ·»å æ§ä»¶éç¥å¤çç¨åºä»£ç int nCount = m_listPPID.GetItemCount(); for (int i = 0; i < nCount; ++i) { std::string strPPID = CT2A(m_listPPID.GetItemText(i, 2)); SECSRuntimeManager::getInstance().updatePPIDForRecipe(i, strPPID); } //if (!SECSRuntimeManager::getInstance().saveAllPPID(vecData)) { // AfxMessageBox(_T("ä¿å失败")); //} //else { // AfxMessageBox(_T("ä¿åæå")); //} } void CPageRecipe::OnBnClickedButtonRefresh() { // TODO: 卿¤æ·»å æ§ä»¶éç¥å¤çç¨åºä»£ç auto vecData = SECSRuntimeManager::getInstance().getAllPPID(); FillDataToListCtrl(vecData); } void CPageRecipe::OnLvnItemChangedListPPID(NMHDR* pNMHDR, LRESULT* pResult) { LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR); *pResult = 0; if ((pNMLV->uChanged & LVIF_STATE) && (pNMLV->uNewState & LVIS_SELECTED)) { int nItem = pNMLV->iItem; CString strPPID = m_listPPID.GetItemText(nItem, 2); m_editPPID.SetWindowText(strPPID); } } SourceCode/Bond/Servo/PageRecipe.h
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,39 @@ #pragma once #include "afxdialogex.h" //#include "ListCtrlEx.h" // CPageRecipe å¯¹è¯æ¡ class CPageRecipe : public CDialogEx { DECLARE_DYNAMIC(CPageRecipe) public: CPageRecipe(CWnd* pParent = nullptr); // æ åæé 彿° virtual ~CPageRecipe(); private: void FillDataToListCtrl(const std::vector<std::string>& vecData); // å¯¹è¯æ¡æ°æ® #ifdef AFX_DESIGN_TIME enum { IDD = IDD_PAGE_RECIPE }; #endif protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV æ¯æ virtual BOOL OnInitDialog(); afx_msg void OnBnClickedButtonSearch(); afx_msg void OnBnClickedButtonModify(); afx_msg void OnBnClickedButtonDelete(); afx_msg void OnBnClickedButtonDeleteAll(); afx_msg void OnBnClickedButtonSave(); afx_msg void OnBnClickedButtonRefresh(); afx_msg void OnLvnItemChangedListPPID(NMHDR* pNMHDR, LRESULT* pResult); DECLARE_MESSAGE_MAP() private: CListCtrl m_listPPID; CEdit m_editPPID; }; SourceCode/Bond/Servo/SECSRuntimeManager.cpp
@@ -1420,6 +1420,22 @@ } } std::vector<std::string> SECSRuntimeManager::getAllPPID() { std::lock_guard<std::mutex> lock(m_mutex); if (m_pDB == nullptr) { return {}; } std::string querySQL = "SELECT PPID FROM EqpPPID;"; auto rows = m_pDB->fetchResults(querySQL); std::vector<std::string> vecResult; for (const auto& row : rows) { vecResult.push_back(row[0]); } return vecResult; } bool SECSRuntimeManager::updatePPIDForRecipe(int nRecipeNo, const std::string& strPPID) { std::lock_guard<std::mutex> lock(m_mutex); if (m_pDB == nullptr) { SourceCode/Bond/Servo/SECSRuntimeManager.h
@@ -389,6 +389,8 @@ */ void initPPIDTable(); std::vector<std::string> getAllPPID(); bool updatePPIDForRecipe(int nRecipeNo, const std::string& strPPID); std::string getPPIDForRecipe(int nRecipeNo); SourceCode/Bond/Servo/Servo.rcBinary files differ
SourceCode/Bond/Servo/Servo.vcxproj
@@ -133,7 +133,10 @@ <AdditionalIncludeDirectories>$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> </ResourceCompile> <PostBuildEvent> <Command>copy "$(TargetDir)$(ProjectName).exe" "\\DESKTOP-IODBVIQ\Servo\Debug\$(ProjectName).exe"</Command> <Command>if exist "\\DESKTOP-IODBVIQ\Servo\Debug\" ( xcopy /Y /D "$(OutDir)*.exe" "\\DESKTOP-IODBVIQ\Servo\Debug\" xcopy /Y /D "$(OutDir)*.pdb" "\\DESKTOP-IODBVIQ\Servo\Debug\" )</Command> </PostBuildEvent> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> @@ -195,6 +198,7 @@ <Text Include="ReadMe.txt" /> </ItemGroup> <ItemGroup> <ClInclude Include="PageRecipe.h" /> <ClInclude Include="PageAlarm.h" /> <ClInclude Include="AlarmManager.h" /> <ClInclude Include="ApredTreeCtrl2.h" /> @@ -289,6 +293,7 @@ <ClInclude Include="VerticalLine.h" /> </ItemGroup> <ItemGroup> <ClCompile Include="PageRecipe.cpp" /> <ClCompile Include="PageAlarm.cpp" /> <ClCompile Include="AlarmManager.cpp" /> <ClCompile Include="ApredTreeCtrl2.cpp" /> SourceCode/Bond/Servo/Servo.vcxproj.filters
@@ -100,6 +100,7 @@ <ClCompile Include="CArm.cpp" /> <ClCompile Include="CArmTray.cpp" /> <ClCompile Include="ProductionLogManager.cpp" /> <ClCompile Include="PageRecipe.cpp" /> </ItemGroup> <ItemGroup> <ClInclude Include="AlarmManager.h" /> @@ -198,6 +199,7 @@ <ClInclude Include="CArm.h" /> <ClInclude Include="CArmTray.h" /> <ClInclude Include="ProductionLogManager.h" /> <ClInclude Include="PageRecipe.h" /> </ItemGroup> <ItemGroup> <ResourceCompile Include="Servo.rc" /> SourceCode/Bond/Servo/ServoDlg.cpp
@@ -75,6 +75,7 @@ m_pPageGraph2 = nullptr; m_pPageAlarm = nullptr; m_pPageLog = nullptr; m_pPageRecipe = nullptr; } void CServoDlg::DoDataExchange(CDataExchange* pDX) @@ -214,6 +215,8 @@ m_pPageGraph1->Create(IDD_PAGE_GRAPH1, this); m_pPageGraph2 = new CPageGraph2(); m_pPageGraph2->Create(IDD_PAGE_GRAPH2, this); m_pPageRecipe = new CPageRecipe(); m_pPageRecipe->Create(IDD_PAGE_RECIPE, this); m_pPageAlarm = new CPageAlarm(); m_pPageAlarm->Create(IDD_DIALOG_ALARM, this); m_pPageLog = new CPageLog(); @@ -224,6 +227,7 @@ m_pTab->SetItemMarginLeft(18); m_pTab->AddItem("״̬ͼ", FALSE); m_pTab->AddItem("è¿æ¥å¾", TRUE); m_pTab->AddItem("é æ¹", TRUE); m_pTab->AddItem("æ¥è¦", TRUE); m_pTab->AddItem("æ¥å¿", TRUE); m_pTab->SetCurSel(0); @@ -523,6 +527,12 @@ m_pPageGraph2 = nullptr; } if (m_pPageRecipe != nullptr) { m_pPageRecipe->DestroyWindow(); delete m_pPageRecipe; m_pPageRecipe = nullptr; } if (m_pPageAlarm != nullptr) { m_pPageAlarm->DestroyWindow(); delete m_pPageAlarm; @@ -552,6 +562,7 @@ if (GetDlgItem(IDC_TAB1) == nullptr) return; if (m_pPageGraph1 == nullptr) return; if (m_pPageGraph2 == nullptr) return; if (m_pPageRecipe == nullptr) return; if (m_pPageAlarm == nullptr) return; if (m_pPageLog == nullptr) return; @@ -596,6 +607,7 @@ m_pPageGraph1->MoveWindow(x, y, rcClient.Width() - x, rcClient.Height() - y); m_pPageGraph2->MoveWindow(x, y, rcClient.Width() - x, rcClient.Height() - y); m_pPageRecipe->MoveWindow(x, y, rcClient.Width() - x, rcClient.Height() - y); m_pPageAlarm->MoveWindow(x, y, rcClient.Width() - x, rcClient.Height() - y); m_pPageLog->MoveWindow(x, y, rcClient.Width() - x, rcClient.Height() - y); } @@ -658,9 +670,9 @@ void CServoDlg::ShowChildPage(int index) { ASSERT(0 <= index && index < 4); static CWnd* pPages[] = { m_pPageGraph1, m_pPageGraph2, m_pPageAlarm, m_pPageLog }; for (int i = 0; i < 4; i++) { ASSERT(0 <= index && index < 5); static CWnd* pPages[] = { m_pPageGraph1, m_pPageGraph2, m_pPageRecipe, m_pPageAlarm, m_pPageLog }; for (int i = 0; i < 5; i++) { pPages[i]->ShowWindow(i == index ? SW_SHOW : SW_HIDE); } } SourceCode/Bond/Servo/ServoDlg.h
@@ -6,6 +6,7 @@ #include "BlButton.h" #include "PageLog.h" #include "PageAlarm.h" #include "PageRecipe.h" #include "TerminalDisplayDlg.h" #include "CPanelMaster.h" #include "CPanelEquipment.h" @@ -36,6 +37,7 @@ CTerminalDisplayDlg* m_pTerminalDisplayDlg; CPageGraph1* m_pPageGraph1; CPageGraph2* m_pPageGraph2; CPageRecipe* m_pPageRecipe; CPageAlarm* m_pPageAlarm; CPageLog* m_pPageLog; SourceCode/Bond/Servo/resource.hBinary files differ