158 lines
4.4 KiB
C++
158 lines
4.4 KiB
C++
// SaniWarePropDlg.cpp : implementation file
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "resource.h"
|
|
#include "SaniFittingAttrDlg.h"
|
|
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CSaniFittingAttrDlg dialog
|
|
|
|
|
|
CSaniFittingAttrDlg::CSaniFittingAttrDlg(CWnd* pParent /*=NULL*/)
|
|
: CSaniFittingAttrBaseDlg(CSaniFittingAttrDlg::IDD, pParent)
|
|
{
|
|
//{{AFX_DATA_INIT(CSaniFittingAttrDlg)
|
|
m_bMultiPlace = FALSE;
|
|
m_nComponentSpace = 0;
|
|
m_nDistToWall = 0;
|
|
m_nInitSpace = 0;
|
|
m_csKindName = _T("");
|
|
m_csDescName = _T("");
|
|
//}}AFX_DATA_INIT
|
|
}
|
|
|
|
|
|
void CSaniFittingAttrDlg::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CSaniFittingAttrBaseDlg::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(CSaniFittingAttrDlg)
|
|
DDX_Check(pDX, IDC_CHECK_MULTIPLACE, m_bMultiPlace);
|
|
DDX_Text(pDX, IDC_EDIT_CSPACE, m_nComponentSpace);
|
|
DDX_Text(pDX, IDC_EDIT_DISTWALL, m_nDistToWall);
|
|
DDX_Text(pDX, IDC_EDIT_ISPACE, m_nInitSpace);
|
|
DDX_Text(pDX, IDC_EDIT_KIND, m_csKindName);
|
|
DDX_Text(pDX, IDC_EDIT_NAME, m_csDescName);
|
|
//}}AFX_DATA_MAP
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CSaniFittingAttrDlg, CSaniFittingAttrBaseDlg)
|
|
//{{AFX_MSG_MAP(CSaniFittingAttrDlg)
|
|
// NOTE: the ClassWizard will add message map macros here
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CSaniFittingAttrDlg message handlers
|
|
|
|
// 从设备的数据中取数
|
|
BOOL CSaniFittingAttrDlg::SetFromSaniWare(const CSaniFittingAttr &data, BOOL bGetNextName)
|
|
{
|
|
m_bMultiPlace = (data.m_nPlaceFlag==0);
|
|
|
|
if(bGetNextName) {
|
|
XString sNextName, sDwbName;
|
|
sDwbName << g_sDwbPath <<_T("lvtry.dwb");
|
|
sNextName << data.m_csBlockName;
|
|
if(GetNextItem(sDwbName, sNextName)!=RTNORM)
|
|
return FALSE;
|
|
m_csBlockName = sNextName;
|
|
} else {
|
|
m_csBlockName = data.m_csBlockName;
|
|
}
|
|
m_csDescName = data.m_csDescName;
|
|
m_csKindName = data.m_csKindName;
|
|
m_nComponentSpace = AS_INT(data.m_dComponentSpace);
|
|
m_nDistToWall = AS_INT(data.m_dDistToWall);
|
|
m_nInitSpace = AS_INT(data.m_dInitSpace);
|
|
m_dOrigenalSizeX = data.m_dOrigenalSizeX;
|
|
m_dOrigenalSizeY = data.m_dOrigenalSizeY;
|
|
return TRUE;
|
|
}
|
|
|
|
XString Int2Char8(unsigned nIndex)
|
|
{
|
|
XString sIndex(_T("%d"), nIndex);
|
|
int nLen=(int)_tcslen(sIndex);
|
|
XString sRet;
|
|
int nSpace=8-nLen;
|
|
for(int i=0; i<nSpace; i++)
|
|
sRet << _T("0");
|
|
sRet << sIndex;
|
|
ASSERT(sRet.Length()==8);
|
|
return sRet;
|
|
}
|
|
//是否全部为数字
|
|
BOOL IsDigital(const TCHAR *pStr)
|
|
{
|
|
ASSERT(pStr);
|
|
int nLen=(int)_tcslen(pStr);
|
|
if(!nLen)
|
|
return FALSE;
|
|
for(int i=0; i<nLen; i++) {
|
|
if(!_istdigit(pStr[i]))
|
|
return FALSE;
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
#if 0
|
|
int CSaniWarePropDlg::GetNextItem(const TCHAR *dwb, TCHAR *sld)
|
|
{
|
|
//extern BOOL IsDigital(const TCHAR *pStr);
|
|
XASLibMan lib(dwb, LZW_EXT, DWB_TITLE, ios::binary|ios::in);
|
|
XStringList recs;
|
|
if(!lib.GetAll(recs)) {
|
|
_tcscpy(sld, _T("00000001"));
|
|
return RTNORM;
|
|
}
|
|
TCHAR *maxStr=recs.MaxValue(0);
|
|
if(IsDigital(maxStr)) {
|
|
int nIndex=_ttoi(maxStr);
|
|
nIndex++;
|
|
XString sIndex=Int2Char8((unsigned)nIndex);
|
|
_tcscpy(sld, sIndex);
|
|
} else if(maxStr && _tcslen(maxStr)>3) {
|
|
int slen=_tcslen(maxStr);
|
|
TCHAR a1=maxStr[slen-1], a2=maxStr[slen-2], a3=maxStr[slen-3];
|
|
if(a1>=_T('0') && a1<_T('9')) a1++;
|
|
else if(a1==_T('9') && a2>=_T('0') && a2<_T('9')) { a1=_T('0'); a2++; }
|
|
else if(a1==_T('9') && a2==_T('9') && a3>=_T('0') && a3<_T('9')) { a1=a2=_T('0'); a3++; }
|
|
else {
|
|
a1++;
|
|
if(!_istalpha(a1) && !_istdigit(a1))
|
|
return RTERROR;
|
|
}
|
|
_tcscpy(sld, maxStr);
|
|
sld[slen-1]=a1; sld[slen-2]=a2; sld[slen-3]=a3;
|
|
} else {
|
|
_tcscpy(sld, _T("00000000"));
|
|
return RTERROR;
|
|
}
|
|
return RTNORM;
|
|
}
|
|
#endif
|
|
|
|
// 把数据写到设备中
|
|
BOOL CSaniFittingAttrDlg::WriteToSaniWare(CSaniFittingAttr &data) const
|
|
{
|
|
data.m_nPlaceFlag = !m_bMultiPlace;
|
|
data.m_csBlockName = m_csBlockName;
|
|
|
|
data.m_csDescName = m_csDescName;
|
|
data.m_csKindName = m_csKindName;
|
|
data.m_dComponentSpace = m_nComponentSpace;
|
|
data.m_dDistToWall = m_nDistToWall;
|
|
data.m_dInitSpace = m_nInitSpace;
|
|
data.m_dOrigenalSizeX = m_dOrigenalSizeX;
|
|
data.m_dOrigenalSizeY = m_dOrigenalSizeY;
|
|
return TRUE;
|
|
} |