📄 dlgpropertyopcitem.cpp
字号:
// DlgPropertyOPCItem.cpp : implementation file
//
#include "stdafx.h"
#include "TYOPCClient.h"
#include "DlgPropertyOPCItem.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CDlgOPCItemProperty dialog
CDlgOPCItemProperty::CDlgOPCItemProperty(COPCGroup* pOPCGroup,COPCItem* pOPCItem,CWnd* pParent /*=NULL*/)
: CDialog(CDlgOPCItemProperty::IDD, pParent)
{
ASSERT(pOPCGroup);
ASSERT(pOPCItem);
//{{AFX_DATA_INIT(CDlgOPCItemProperty)
m_strAccessPath = _T("");
m_strAlias = _T("");
m_strItemID = _T("");
m_bActive = TRUE;
m_nDataType = 0;
//}}AFX_DATA_INIT
m_pOPCGroup=pOPCGroup;
m_pOPCItem=pOPCItem;
}
void CDlgOPCItemProperty::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDlgOPCItemProperty)
DDX_Control(pDX, IDC_DATATYPE, m_ctrlComboBox);
DDX_Text(pDX, IDC_ACCESSPATH, m_strAccessPath);
DDX_Text(pDX, IDC_ALIAS, m_strAlias);
DDX_Text(pDX, IDC_ITEMID, m_strItemID);
DDX_Check(pDX, IDC_ACTIVE, m_bActive);
DDX_CBIndex(pDX, IDC_DATATYPE, m_nDataType);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CDlgOPCItemProperty, CDialog)
//{{AFX_MSG_MAP(CDlgOPCItemProperty)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CDlgOPCItemProperty message handlers
BOOL CDlgOPCItemProperty::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
m_strAccessPath =m_pOPCItem->GetAccessPath ();
m_strAlias = m_pOPCItem->GetAlias ();
m_strItemID = m_pOPCItem->GetItemID ();
m_bActive = m_pOPCItem->IsActive ();
CString strDataType;
m_pOPCItem->GetDataType (strDataType);
CStringArray strArrDataType;
m_pOPCItem->EnumDataType(strArrDataType);
for(int nItem=0;nItem<=strArrDataType.GetUpperBound ();nItem++)
{
m_ctrlComboBox.AddString (strArrDataType.GetAt (nItem));
if(strArrDataType.GetAt (nItem)==strDataType)
m_nDataType = nItem;
}
m_strOldAlias=m_strAlias;
m_bOldActive=m_bActive;
m_nOldDataType=m_nDataType;
UpdateData (FALSE);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CDlgOPCItemProperty::OnOK()
{
// TODO: Add extra validation here
UpdateData (TRUE);
//1.别名不能为NULL
m_strAlias.TrimLeft ();
m_strAlias.TrimRight ();
if(m_strAlias.IsEmpty ())
{
AfxMessageBox("别名不能为空字符串", MB_OK| MB_ICONQUESTION);
return;
}
//2.判断是否更改别名
if( m_strOldAlias!=m_strAlias)
{
if(m_pOPCGroup->IsBeingAlias(m_strAlias))
{
CString strTip;
strTip.Format ("%s 项已经存在[%s]组中",m_strAlias,m_pOPCGroup->GetName());
AfxMessageBox (strTip, MB_OK| MB_ICONQUESTION);
return;
}
//
m_pOPCItem->SetAlias (m_strAlias);
}
//3.判断是否更改数据活动状态
if(m_bOldActive!=m_bActive)
{
CStringArray strItems;
strItems.Add (m_pOPCItem->GetItemID ());
if(!m_pOPCGroup->SetItemActiveState (strItems,1==m_bActive))
{
CString strTip;
strTip.Format ("%s 项设定活动状态失败",m_strAlias);
AfxMessageBox (strTip, MB_OK| MB_ICONQUESTION);
return;
}
}
//4.判断是否更改数据类型
if(m_nOldDataType!=m_nDataType)
{
CStringArray strItems;
CStringArray strDatatypes;
strItems.Add (m_pOPCItem->GetItemID ());
CString strDataType;
m_ctrlComboBox.GetWindowText (strDataType);
strDatatypes.Add (strDataType);
if(!m_pOPCGroup->SetItemDatatypes (strItems,strDatatypes))
{
CString strTip;
strTip.Format ("%s 项设定数据类型失败",m_strAlias);
AfxMessageBox (strTip, MB_OK| MB_ICONQUESTION);
return;
}
}
//
CDialog::OnOK();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -