405 lines
8.6 KiB
C++
405 lines
8.6 KiB
C++
#include "stdafx.h"
|
|
#include "UserDataDlg.h"
|
|
|
|
extern CMapStringToString *g_pMapData = NULL;
|
|
|
|
|
|
IMPLEMENT_DYNAMIC(CUserDataDlg, CDialog)
|
|
|
|
CUserDataDlg::CUserDataDlg(int nType,CWnd* pParent /*=NULL*/)
|
|
: CDialog(CUserDataDlg::IDD, pParent)
|
|
{
|
|
m_bReadOnly = FALSE;
|
|
m_bModified = FALSE;
|
|
m_nType = nType;
|
|
}
|
|
|
|
CUserDataDlg::~CUserDataDlg()
|
|
{
|
|
}
|
|
|
|
void CUserDataDlg::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
DDX_Control(pDX, IDC_LISTUSERDATA, m_wndListUserData);
|
|
DDX_Control(pDX, IDC_BTNEW, m_wndBtnew);
|
|
DDX_Control(pDX, IDC_BTDEL, m_wndBtDel);
|
|
}
|
|
|
|
BEGIN_MESSAGE_MAP(CUserDataDlg, CDialog)
|
|
ON_BN_CLICKED(IDC_BTNEW, &CUserDataDlg::OnBnClickedBtnew)
|
|
ON_BN_CLICKED(IDC_BTDEL, &CUserDataDlg::OnBnClickedBtdel)
|
|
ON_BN_CLICKED(IDOK, &CUserDataDlg::OnBnClickedOk)
|
|
ON_WM_DESTROY()
|
|
ON_BN_CLICKED(IDC_SAVE, &CUserDataDlg::OnBnClickedSave)
|
|
END_MESSAGE_MAP()
|
|
|
|
BOOL CUserDataDlg::OnInitDialog()
|
|
{
|
|
CDialog::OnInitDialog();
|
|
|
|
CBitmap bmp;
|
|
if (!bmp.LoadBitmap (IDB_BITMAPI))
|
|
{
|
|
AfxMessageBox(_T("Can't load bitmap: %x\n"), IDB_BITMAPI);
|
|
ASSERT (FALSE);
|
|
return FALSE;
|
|
}
|
|
|
|
BITMAP bmpObj;
|
|
bmp.GetBitmap (&bmpObj);
|
|
|
|
UINT nFlags = ILC_COLOR24 | ILC_MASK;
|
|
|
|
m_imageList.Create (16, bmpObj.bmHeight, nFlags, 0, 0);
|
|
m_imageList.Add (&bmp, RGB (255, 0, 0));
|
|
|
|
m_wndListUserData.InsertColumn(0,_T("名称"),LVCFMT_LEFT,100,100);
|
|
m_wndListUserData.InsertColumn(1,_T("内容"),LVCFMT_LEFT,200,200);
|
|
m_wndListUserData.SetExtendedStyle(LVS_EX_FULLROWSELECT);
|
|
m_wndBtnew.EnableWindow(FALSE);
|
|
m_wndBtDel.EnableWindow(FALSE);
|
|
if (!m_bReadOnly)
|
|
{
|
|
#ifndef HAITIAN
|
|
m_wndListUserData.SetColumnItemData(0,NULL,ET_Edit);
|
|
#endif
|
|
m_wndListUserData.SetColumnItemData(1,NULL,ET_Edit);
|
|
m_wndBtnew.EnableWindow(TRUE);
|
|
m_wndBtDel.EnableWindow(TRUE);
|
|
}
|
|
|
|
m_wndListUserData.SetImageList(&m_imageList,LVSIL_SMALL);
|
|
|
|
if(m_mapUserData.GetCount() == 0)
|
|
{
|
|
ReadDefaultData();
|
|
}
|
|
ShowUserData();
|
|
|
|
#ifdef HAITIAN
|
|
GetDlgItem(IDC_BTNEW)->ShowWindow(FALSE);
|
|
GetDlgItem(IDC_BTDEL)->ShowWindow(FALSE);
|
|
GetDlgItem(IDC_SAVE)->ShowWindow(FALSE);
|
|
#endif
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
void CUserDataDlg::ShowUserData()
|
|
{
|
|
//1---Name:Val
|
|
int nCount = 0;
|
|
CString sKey,sVal,sTemp1,sTemp2;
|
|
for (POSITION ps = m_mapUserData.GetStartPosition();ps != NULL;)
|
|
{
|
|
m_mapUserData.GetNextAssoc(ps,sKey,sVal);
|
|
int nindex = sVal.Find(_T(':'));
|
|
if (nindex != -1)
|
|
{
|
|
sTemp1 = sVal.Mid(0,nindex);
|
|
sTemp2 = sVal.Mid(nindex + 1);//val
|
|
|
|
nCount = m_wndListUserData.GetItemCount();
|
|
m_wndListUserData.InsertItem(nCount,sTemp1,0);
|
|
m_wndListUserData.SetItemText(nCount,1,sTemp2);
|
|
}
|
|
}
|
|
}
|
|
|
|
void CUserDataDlg::SetUserData(CMapStringToString& mapData)
|
|
{
|
|
//1---Name:Val
|
|
int nCount = 0;
|
|
CString sKey,sVal,sTemp1,sTemp2;
|
|
for (POSITION ps = mapData.GetStartPosition();ps != NULL;)
|
|
{
|
|
mapData.GetNextAssoc(ps,sKey,sVal);
|
|
m_mapUserData.SetAt(sKey,sVal);
|
|
}
|
|
}
|
|
|
|
int CUserDataDlg::GetUserData(CMapStringToString& mapData)
|
|
{
|
|
CString sKey,sVal;
|
|
for (POSITION ps = m_mapUserData.GetStartPosition();ps != NULL;)
|
|
{
|
|
m_mapUserData.GetNextAssoc(ps,sKey,sVal);
|
|
mapData.SetAt(sKey,sVal);
|
|
}
|
|
return mapData.GetCount();
|
|
}
|
|
|
|
void CUserDataDlg::SetUserData(const SH_BIM_BLOCK &mapData)
|
|
{
|
|
m_mapUserData.RemoveAll();
|
|
SH_BIM_BLOCK::const_iterator it(mapData.begin());
|
|
CString sName, sVal;
|
|
for (int i = 0; it != mapData.end(); ++it, ++i)
|
|
{
|
|
sVal = it->first;
|
|
sVal += _T(':');
|
|
sVal += it->second;
|
|
sName.Format(_T("user%d"), i);
|
|
m_mapUserData.SetAt(sName, sVal);
|
|
}
|
|
}
|
|
|
|
void CUserDataDlg::GetUserData(SH_BIM_BLOCK &mapData)
|
|
{
|
|
mapData.clear();
|
|
CString sKey, sVal, sTemp1, sTemp2;
|
|
for (POSITION ps = m_mapUserData.GetStartPosition(); ps != NULL;)
|
|
{
|
|
m_mapUserData.GetNextAssoc(ps, sKey, sVal);
|
|
int nindex = sVal.Find(_T(':'));
|
|
if (nindex != -1)
|
|
{
|
|
sTemp1 = sVal.Mid(0, nindex);
|
|
sTemp2 = sVal.Mid(nindex + 1);//val
|
|
mapData.push_back(std::make_pair(sTemp1, sTemp2));
|
|
}
|
|
}
|
|
}
|
|
|
|
void CUserDataDlg::OnBnClickedBtnew()
|
|
{
|
|
int nCount = m_wndListUserData.GetItemCount();
|
|
m_wndListUserData.InsertItem(nCount,_T("名称"),0);
|
|
m_wndListUserData.SetItemText(nCount,1,_T("内容"));
|
|
m_bModified = TRUE;
|
|
}
|
|
|
|
void CUserDataDlg::OnBnClickedBtdel()
|
|
{
|
|
POSITION ps = m_wndListUserData.GetFirstSelectedItemPosition();
|
|
if (ps != NULL)
|
|
{
|
|
int nItem = m_wndListUserData.GetNextSelectedItem(ps);
|
|
if (nItem != -1)
|
|
{
|
|
m_wndListUserData.DeleteItem(nItem);
|
|
m_bModified = TRUE;
|
|
}
|
|
}
|
|
}
|
|
|
|
void CUserDataDlg::OnBnClickedOk()
|
|
{
|
|
m_bModified = TRUE;
|
|
m_mapUserData.RemoveAll();
|
|
CString sName,sVal,sKey;
|
|
for(int i = 0;i < m_wndListUserData.GetItemCount();i++)
|
|
{
|
|
sName = m_wndListUserData.GetItemText(i,0);
|
|
sVal = m_wndListUserData.GetItemText(i,1);
|
|
|
|
sName += _T(":");
|
|
sName += sVal;
|
|
sKey.Format(_T("user%d"),i);
|
|
m_mapUserData.SetAt(sKey,sName);
|
|
}
|
|
OnOK();
|
|
}
|
|
|
|
|
|
void CUserDataDlg::UpdateParameter()
|
|
{
|
|
if(g_pMapData == NULL)
|
|
{
|
|
g_pMapData = new CMapStringToString;
|
|
}
|
|
else
|
|
{
|
|
g_pMapData->RemoveAll();
|
|
}
|
|
m_bModified = TRUE;
|
|
m_mapUserData.RemoveAll();
|
|
CString sName,sVal,sKey;
|
|
|
|
CString szSurfaceTreatment = _T("");
|
|
for(int i = 0;i < m_wndListUserData.GetItemCount();i++)
|
|
{
|
|
sName = m_wndListUserData.GetItemText(i,0);
|
|
sVal = m_wndListUserData.GetItemText(i,1);
|
|
|
|
if(sName == _T("表面处理"))
|
|
szSurfaceTreatment = sVal;
|
|
}
|
|
|
|
|
|
for(int i = 0;i < m_wndListUserData.GetItemCount();i++)
|
|
{
|
|
sName = m_wndListUserData.GetItemText(i,0);
|
|
sVal = m_wndListUserData.GetItemText(i,1);
|
|
|
|
if(sName == _T("物料描述"))
|
|
{
|
|
if(sVal.Find(szSurfaceTreatment) == -1)
|
|
{
|
|
if(sVal.Find(_T(")")) != -1)
|
|
{
|
|
sVal.Replace(_T("$"),szSurfaceTreatment);
|
|
}
|
|
else
|
|
{
|
|
sVal += _T("(") + szSurfaceTreatment + _T(")");
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
sName += _T(":");
|
|
sName += sVal;
|
|
sKey.Format(_T("user%d"),i);
|
|
m_mapUserData.SetAt(sKey,sName);
|
|
g_pMapData->SetAt(sKey,sName);
|
|
}
|
|
}
|
|
|
|
void CUserDataDlg::OnCancel()
|
|
{
|
|
if(m_nType == 0)
|
|
return;
|
|
else
|
|
CDialog::OnCancel();
|
|
}
|
|
|
|
int CUserDataDlg::GetUserData_New(CMapStringToString& mapData)
|
|
{
|
|
m_mapUserData.RemoveAll();
|
|
CString sName,sVal,sKey;
|
|
for(int i = 0;i < m_wndListUserData.GetItemCount();i++)
|
|
{
|
|
sName = m_wndListUserData.GetItemText(i,0);
|
|
sVal = m_wndListUserData.GetItemText(i,1);
|
|
|
|
sName += _T(":");
|
|
sName += sVal;
|
|
sKey.Format(_T("user%d"),i);
|
|
m_mapUserData.SetAt(sKey,sName);
|
|
}
|
|
for (POSITION ps = m_mapUserData.GetStartPosition();ps != NULL;)
|
|
{
|
|
m_mapUserData.GetNextAssoc(ps,sKey,sVal);
|
|
mapData.SetAt(sKey,sVal);
|
|
}
|
|
return mapData.GetCount();
|
|
}
|
|
|
|
void CUserDataDlg::SaveDefaultData()
|
|
{
|
|
//m_mapUserData
|
|
//TCHAR szFile[MAX_PATH];
|
|
CString iniFile = FilePath::GetSysDir();
|
|
iniFile += _T("\\Pipe.ini");
|
|
if (_taccess(iniFile, 0x00) != 0x00)
|
|
{
|
|
return;
|
|
}
|
|
// if(FindFile(_T("Pipe.ini"), szFile))
|
|
// {
|
|
// DeleteFile(szFile);
|
|
// }
|
|
|
|
int nCount = m_mapUserData.GetCount();
|
|
|
|
CString szCount;
|
|
szCount.Format(_T("%d"),nCount);
|
|
|
|
CString szAppName;
|
|
szAppName = _T("UserData_Pipe");
|
|
if(m_nType == 1)
|
|
szAppName = _T("UserData_Equipment");
|
|
|
|
WritePrivateProfileString(szAppName,_T("Count"),szCount,iniFile);
|
|
|
|
CString sKey,sVal;
|
|
int nIndex = 0;
|
|
for (POSITION ps = m_mapUserData.GetStartPosition();ps != NULL;)
|
|
{
|
|
m_mapUserData.GetNextAssoc(ps,sKey,sVal);
|
|
WritePrivateProfileString(szAppName,sKey,sVal,iniFile);
|
|
nIndex++;
|
|
}
|
|
}
|
|
|
|
void CUserDataDlg::ReadDefaultData()
|
|
{
|
|
m_mapUserData.RemoveAll();
|
|
//TCHAR szFile[MAX_PATH];
|
|
CString iniFile = FilePath::GetSysDir();
|
|
iniFile += _T("\\Pipe.ini");
|
|
if (_taccess(iniFile, 0x00) != 0x00)
|
|
return;
|
|
// if(!FindFile(_T("Pipe.ini"), szFile))
|
|
// {
|
|
// return;
|
|
// }
|
|
CString szAppName;
|
|
szAppName = _T("UserData_Pipe");
|
|
if(m_nType == 1)
|
|
szAppName = _T("UserData_Equipment");
|
|
|
|
|
|
TCHAR szResult[_MAX_PATH];
|
|
GetPrivateProfileString(szAppName,_T("Count"),_T("0"),szResult,_MAX_PATH,iniFile);
|
|
int nCount = _ttoi(CString(szResult));
|
|
|
|
for (int i=0;i<nCount;i++)
|
|
{
|
|
CString sKey,sValue;
|
|
sKey.Format(_T("User%d"),i);
|
|
GetPrivateProfileString(szAppName,sKey,_T("0"),szResult,_MAX_PATH,iniFile);
|
|
|
|
if(m_nType == 1)
|
|
{
|
|
//编辑时,只读取字段,不读取默认值.
|
|
CString szTemp = szResult;
|
|
szTemp = szTemp.Mid(0,szTemp.Find(_T(":"))+1);
|
|
m_mapUserData.SetAt(sKey,szTemp);
|
|
}
|
|
else
|
|
{
|
|
m_mapUserData.SetAt(sKey,szResult);
|
|
}
|
|
}
|
|
}
|
|
|
|
void CUserDataDlg::OnDestroy()
|
|
{
|
|
CDialog::OnDestroy();
|
|
}
|
|
|
|
|
|
void CUserDataDlg::OnBnClickedSave()
|
|
{
|
|
GetUserData_New(m_mapUserData);
|
|
SaveDefaultData();
|
|
}
|
|
|
|
void CUserDataDlg::SetParameterValue(CString szStandard,CString szDesc,CString szModel)
|
|
{
|
|
CString sName,sVal,sKey;
|
|
for(int i = 0;i < m_wndListUserData.GetItemCount();i++)
|
|
{
|
|
sName = m_wndListUserData.GetItemText(i,0);
|
|
sVal = m_wndListUserData.GetItemText(i,1);
|
|
|
|
if(sName == _T("物料描述"))
|
|
{
|
|
m_wndListUserData.SetItemText(i,1,szDesc);
|
|
}
|
|
|
|
if(sName == _T("执行标准"))
|
|
{
|
|
m_wndListUserData.SetItemText(i,1,szStandard);
|
|
|
|
}
|
|
if(sName == _T("规格型号"))
|
|
{
|
|
m_wndListUserData.SetItemText(i,1,szModel);
|
|
|
|
}
|
|
}
|
|
} |