a
This commit is contained in:
@@ -0,0 +1,300 @@
|
||||
// DialCfgTaskPacket.cpp : implementation file
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "geomative.h"
|
||||
#include "DialCfgTaskPacket.h"
|
||||
|
||||
#ifdef _DEBUG
|
||||
#define new DEBUG_NEW
|
||||
#undef THIS_FILE
|
||||
static char THIS_FILE[] = __FILE__;
|
||||
#endif
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CDialCfgTaskPacket dialog
|
||||
extern int g_iUILanguage;
|
||||
|
||||
CDialCfgTaskPacket::CDialCfgTaskPacket(CWnd* pParent /*=NULL*/)
|
||||
: CDialog(CDialCfgTaskPacket::IDD, pParent)
|
||||
{
|
||||
//{{AFX_DATA_INIT(CDialCfgTaskPacket)
|
||||
// NOTE: the ClassWizard will add member initialization here
|
||||
//}}AFX_DATA_INIT
|
||||
}
|
||||
|
||||
|
||||
void CDialCfgTaskPacket::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CDialog::DoDataExchange(pDX);
|
||||
//{{AFX_DATA_MAP(CDialCfgTaskPacket)
|
||||
DDX_Control(pDX, IDC_LIST_TASK_PACKET, m_listTaskPacket);
|
||||
DDX_Control(pDX, IDC_COMBO_TASK_NAME, m_cmbTaskName);
|
||||
//}}AFX_DATA_MAP
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CDialCfgTaskPacket, CDialog)
|
||||
//{{AFX_MSG_MAP(CDialCfgTaskPacket)
|
||||
ON_BN_CLICKED(IDC_BUTTON_ADD, OnButtonAdd)
|
||||
ON_BN_CLICKED(IDC_BUTTON_DEL, OnButtonDel)
|
||||
//}}AFX_MSG_MAP
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CDialCfgTaskPacket message handlers
|
||||
|
||||
void CDialCfgTaskPacket::OnButtonAdd()
|
||||
{
|
||||
// TODO: Add your control notification handler code here
|
||||
int iCurSel = m_cmbTaskName.GetCurSel();
|
||||
if (iCurSel < 0)
|
||||
{
|
||||
if (LANG_ZHCN == g_iUILanguage)
|
||||
AfxMessageBox(_T("请先选择任务"));
|
||||
else
|
||||
MessageBoxEx(NULL, _T("Please select task firstly"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
|
||||
return;
|
||||
}
|
||||
DWORD dwTaskID = m_cmbTaskName.GetItemData(iCurSel);
|
||||
if (IsRepeatTask(dwTaskID))
|
||||
{
|
||||
if (LANG_ZHCN == g_iUILanguage)
|
||||
AfxMessageBox(_T("任务已存在"));
|
||||
else
|
||||
MessageBoxEx(NULL, _T("This task has been exist."), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
|
||||
return;
|
||||
}
|
||||
CString strTaskName;
|
||||
m_cmbTaskName.GetLBText(iCurSel, strTaskName);
|
||||
int iCnt = m_listTaskPacket.GetItemCount();
|
||||
CString strTxt = "";
|
||||
strTxt.Format(_T("%d"), iCnt+1);
|
||||
m_listTaskPacket.InsertItem(iCnt, "");
|
||||
m_listTaskPacket.SetItemText(iCnt, 0, strTxt);
|
||||
m_listTaskPacket.SetItemText(iCnt, 1, strTaskName);
|
||||
strTxt.Empty();
|
||||
strTxt.Format(_T("%d"), dwTaskID);
|
||||
m_listTaskPacket.SetItemText(iCnt, 2, strTxt);
|
||||
}
|
||||
|
||||
void CDialCfgTaskPacket::OnButtonDel()
|
||||
{
|
||||
// TODO: Add your control notification handler code here
|
||||
int iCurSel = m_listTaskPacket.GetSelectionMark();
|
||||
if (iCurSel < 0)
|
||||
{
|
||||
if (LANG_ZHCN == g_iUILanguage)
|
||||
AfxMessageBox(_T("请先选择任务"));
|
||||
else
|
||||
MessageBoxEx(NULL, _T("Please select task firstly."), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
|
||||
return;
|
||||
}
|
||||
bool bIsNeedMoidfyIndx = (iCurSel == (m_listTaskPacket.GetItemCount()-1)) ? false : true;
|
||||
m_listTaskPacket.DeleteItem(iCurSel);
|
||||
if (bIsNeedMoidfyIndx)
|
||||
{
|
||||
//修改删除后的后续行的序号
|
||||
CString strTxt;
|
||||
for (int i = iCurSel; i < m_listTaskPacket.GetItemCount(); i++)
|
||||
{
|
||||
strTxt.Empty();
|
||||
strTxt.Format(_T("%d"),i+1);
|
||||
m_listTaskPacket.SetItemText(i, 0, strTxt);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
bool CDialCfgTaskPacket::IsRepeatTask(int iTaskID)
|
||||
{
|
||||
int iCnt = m_listTaskPacket.GetItemCount();
|
||||
for (int i = 0; i < iCnt; i++)
|
||||
{
|
||||
if (iTaskID == atoi(m_listTaskPacket.GetItemText(i, 2)))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
BOOL CDialCfgTaskPacket::OnInitDialog()
|
||||
{
|
||||
CDialog::OnInitDialog();
|
||||
|
||||
// TODO: Add extra initialization here
|
||||
std::vector<STTdBrowseInfo> vtTdBrowse;
|
||||
vtTdBrowse.clear();
|
||||
CTaskDataOper dataOper;
|
||||
dataOper.QueryTdBrowseInfo(vtTdBrowse, 1, 0);
|
||||
int iIndex=0;
|
||||
|
||||
for (int i = 0; i < vtTdBrowse.size(); i++)
|
||||
{
|
||||
iIndex = m_cmbTaskName.AddString(vtTdBrowse[i].strTaskName);
|
||||
if (iIndex < 0)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
m_cmbTaskName.SetItemData(iIndex, vtTdBrowse[i].iTaskID);
|
||||
}
|
||||
// GetDlgItem(IDC_COMBO_TASK_NAME)->EnableWindow(FALSE);
|
||||
//
|
||||
int iLoopTime = 0, iInterval=0;
|
||||
CString strTxt = "";
|
||||
if (dataOper.QueryTaskPacketAttr(iLoopTime, iInterval, strTxt))
|
||||
{
|
||||
GetDlgItem(IDC_EDIT_PLCID)->SetWindowText(strTxt);
|
||||
strTxt.Empty();
|
||||
strTxt.Format(_T("%d"),iLoopTime);
|
||||
GetDlgItem(IDC_EDIT_LOOP_TIMES)->SetWindowText(strTxt);
|
||||
|
||||
strTxt.Empty();
|
||||
strTxt.Format(_T("%d"),iInterval);
|
||||
GetDlgItem(IDC_EDIT_INTERVAL_TIME)->SetWindowText(strTxt);
|
||||
}
|
||||
((CEdit*)GetDlgItem(IDC_EDIT_PLCID))->SetLimitText(10);
|
||||
InitialTaskList();
|
||||
return TRUE; // return TRUE unless you set the focus to a control
|
||||
// EXCEPTION: OCX Property Pages should return FALSE
|
||||
}
|
||||
|
||||
void CDialCfgTaskPacket::InitialTaskList()
|
||||
{
|
||||
// TODO: Add extra initialization here
|
||||
CString strColTitle;
|
||||
|
||||
int iColIndex = 0;
|
||||
|
||||
m_listTaskPacket.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_HEADERDRAGDROP
|
||||
| LVS_EX_ONECLICKACTIVATE | LVS_EX_GRIDLINES);
|
||||
|
||||
m_listTaskPacket.InsertColumn(iColIndex++, _T("Index"),LVCFMT_LEFT,150);
|
||||
m_listTaskPacket.InsertColumn(iColIndex++, _T("TaskName"), LVCFMT_CENTER, 250);
|
||||
|
||||
m_listTaskPacket.InsertColumn(iColIndex++, _T("TaskID"), LVCFMT_CENTER, 200);
|
||||
|
||||
|
||||
|
||||
std::vector<STTdBrowseInfo> vtTdBrowse;
|
||||
vtTdBrowse.clear();
|
||||
CTaskDataOper dataOper;
|
||||
dataOper.QueryTaskPacketInfo(vtTdBrowse);
|
||||
int iRowIndex = 0;
|
||||
CString strTxt;
|
||||
for (int i = 0; i <vtTdBrowse.size(); i++)
|
||||
{
|
||||
iRowIndex = m_listTaskPacket.GetItemCount();
|
||||
m_listTaskPacket.InsertItem(iRowIndex, "");
|
||||
strTxt.Empty();
|
||||
strTxt.Format(_T("%d"), i+1);
|
||||
m_listTaskPacket.SetItemText(iRowIndex, 0, strTxt);
|
||||
m_listTaskPacket.SetItemText(iRowIndex, 1, vtTdBrowse[i].strTaskName);
|
||||
strTxt.Empty();
|
||||
strTxt.Format(_T("%d"),vtTdBrowse[i].iTaskID);
|
||||
m_listTaskPacket.SetItemText(iRowIndex, 2, strTxt);
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
void CDialCfgTaskPacket::OnOK()
|
||||
{
|
||||
// TODO: Add extra validation here
|
||||
// if (m_listTaskPacket.GetItemCount() < 1)
|
||||
// {
|
||||
// AfxMessageBox(_T("please add task firstly"));
|
||||
// return;
|
||||
// }
|
||||
CString strTxt = "";
|
||||
GetDlgItem(IDC_EDIT_LOOP_TIMES)->GetWindowText(strTxt);
|
||||
int iLoopTime, iInterval;
|
||||
if (!strTxt.IsEmpty())
|
||||
{
|
||||
iLoopTime = atoi(strTxt);
|
||||
if (iLoopTime < 1 || iLoopTime > 60000)
|
||||
{
|
||||
if (LANG_ZHCN == g_iUILanguage)
|
||||
AfxMessageBox(_T("循环次数的值必须在1-60000之间"));
|
||||
else
|
||||
MessageBoxEx(NULL, _T("The value of LoopTimes should between 1 to 60000"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
|
||||
return;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (LANG_ZHCN == g_iUILanguage)
|
||||
AfxMessageBox(_T("循环次数的值必须在1-60000之间"));
|
||||
else
|
||||
MessageBoxEx(NULL, _T("The value of LoopTimes should between 1 to 60000"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
|
||||
return;
|
||||
}
|
||||
strTxt.Empty();
|
||||
GetDlgItem(IDC_EDIT_INTERVAL_TIME)->GetWindowText(strTxt);
|
||||
if (!strTxt.IsEmpty())
|
||||
{
|
||||
iInterval = atoi(strTxt);
|
||||
if (iInterval < 1 || iInterval > 60000)
|
||||
{
|
||||
if (LANG_ZHCN == g_iUILanguage)
|
||||
AfxMessageBox(_T("时间间隔的值必须在1-60000之间"));
|
||||
else
|
||||
MessageBoxEx(NULL, _T("The value of Interval Time should between 1 to 60000"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
|
||||
return;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (LANG_ZHCN == g_iUILanguage)
|
||||
AfxMessageBox(_T("时间间隔的值必须在1-60000之间"));
|
||||
else
|
||||
MessageBoxEx(NULL, _T("The value of Interval Time should between 1 to 60000"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
|
||||
return;
|
||||
}
|
||||
|
||||
strTxt.Empty();
|
||||
GetDlgItem(IDC_EDIT_PLCID)->GetWindowText(strTxt);
|
||||
if (strTxt.IsEmpty())
|
||||
{
|
||||
if (LANG_ZHCN == g_iUILanguage)
|
||||
AfxMessageBox(_T("请输入PLC ID"));
|
||||
else
|
||||
MessageBoxEx(NULL, _T("Please input plcid"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
|
||||
return;
|
||||
}
|
||||
|
||||
//开始保存
|
||||
std::vector<STTdBrowseInfo> vtTdBrowse;
|
||||
vtTdBrowse.clear();
|
||||
for (int i = 0; i < m_listTaskPacket.GetItemCount(); i++)
|
||||
{
|
||||
STTdBrowseInfo stTdInfo;
|
||||
stTdInfo.strTaskName = m_listTaskPacket.GetItemText(i, 1);
|
||||
stTdInfo.iTaskID = atoi(m_listTaskPacket.GetItemText(i,2));
|
||||
vtTdBrowse.push_back(stTdInfo);
|
||||
}
|
||||
STTaskPacketAttr stPacketAttr;
|
||||
stPacketAttr.iLoopTimes = iLoopTime;
|
||||
stPacketAttr.iInterval = iInterval;
|
||||
stPacketAttr.strPlcID = strTxt;
|
||||
CTaskDataOper dataOper;
|
||||
if (!dataOper.InsertTaskPacketInfo(vtTdBrowse, stPacketAttr))
|
||||
{
|
||||
if (LANG_ZHCN == g_iUILanguage)
|
||||
AfxMessageBox(_T("保存失败"));
|
||||
else
|
||||
MessageBoxEx(NULL, _T("Save failed."), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
|
||||
return;
|
||||
}
|
||||
if (LANG_ZHCN == g_iUILanguage)
|
||||
AfxMessageBox(_T("保存成功"));
|
||||
else
|
||||
MessageBoxEx(NULL, _T("Save success."), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
|
||||
|
||||
CDialog::OnOK();
|
||||
}
|
||||
Reference in New Issue
Block a user