⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dlgpropertyopcitem.cpp

📁 OPC Client 源代码
💻 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 + -