// 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);
|
}
|
}
|