538 lines
11 KiB
C++
538 lines
11 KiB
C++
#include "stdafx.h"
|
|
#include "UIIValueTable.h"
|
|
|
|
IMPLEMENT_SERIAL(CUIIValueTable, CObject, 0)
|
|
|
|
CUIIValueTable::CUIIValueTable()
|
|
{
|
|
|
|
}
|
|
|
|
CUIIValueTable::CUIIValueTable(const CUIIValueTable& valueTable)
|
|
{
|
|
m_rcLineXRecord.RemoveAll();
|
|
m_arValueRecord.RemoveAll();
|
|
m_arValueRecord.Append(valueTable.m_arValueRecord);
|
|
m_rcLineXRecord = valueTable.m_rcLineXRecord;
|
|
m_LableRecord = valueTable.m_LableRecord;
|
|
m_LableIIRecord = valueTable.m_LableIIRecord;
|
|
m_LableIIIRecord = valueTable.m_LableIIIRecord;
|
|
}
|
|
|
|
CUIIValueTable::~CUIIValueTable()
|
|
{
|
|
m_arValueRecord.RemoveAll();
|
|
}
|
|
|
|
void CUIIValueTable::SetLableRecord(CUIIValueRecord &lableRecord)
|
|
{
|
|
int iSize;
|
|
iSize = lableRecord.GetLableLogicSize();
|
|
if(iSize > 0)
|
|
{
|
|
m_LableRecord = lableRecord;
|
|
}
|
|
}
|
|
|
|
void CUIIValueTable::SetLableRecord(CStringArray & arLable)
|
|
{
|
|
m_LableRecord.SetLableValueAr(arLable);
|
|
}
|
|
|
|
void CUIIValueTable::GetLableRecord(CUIIValueRecord &lableRecord)
|
|
{
|
|
lableRecord = m_LableRecord;
|
|
}
|
|
|
|
void CUIIValueTable::GetLableRecord(CStringArray & arLable)
|
|
{
|
|
m_LableRecord.GetLableValueAr(arLable);
|
|
}
|
|
|
|
void CUIIValueTable::SetLableIIRecord(CUIIValueRecord &lableRecord)
|
|
{
|
|
int iSize;
|
|
iSize = lableRecord.GetLableLogicSize();
|
|
if(iSize > 0)
|
|
{
|
|
m_LableIIRecord = lableRecord;
|
|
}
|
|
}
|
|
|
|
void CUIIValueTable::SetLableIIRecord(CStringArray & arLable)
|
|
{
|
|
m_LableIIRecord.SetLableValueAr(arLable);
|
|
}
|
|
|
|
void CUIIValueTable::GetLableIIRecord(CUIIValueRecord &lableRecord)
|
|
{
|
|
lableRecord = m_LableIIRecord;
|
|
}
|
|
|
|
void CUIIValueTable::GetLableIIRecord(CStringArray & arLable)
|
|
{
|
|
m_LableIIRecord.GetLableValueAr(arLable);
|
|
}
|
|
|
|
void CUIIValueTable::SetLableIIIRecord(CUIIValueRecord &lableRecord)
|
|
{
|
|
int iSize;
|
|
iSize = lableRecord.GetLableLogicSize();
|
|
if(iSize > 0)
|
|
{
|
|
m_LableIIIRecord = lableRecord;
|
|
}
|
|
}
|
|
|
|
void CUIIValueTable::SetLableIIIRecord(CStringArray & arLable)
|
|
{
|
|
m_LableIIIRecord.SetLableValueAr(arLable);
|
|
}
|
|
|
|
void CUIIValueTable::GetLableIIIRecord(CUIIValueRecord &lableRecord)
|
|
{
|
|
lableRecord = m_LableIIIRecord;
|
|
}
|
|
|
|
void CUIIValueTable::GetLableIIIRecord(CStringArray & arLable)
|
|
{
|
|
m_LableIIIRecord.GetLableValueAr(arLable);
|
|
}
|
|
|
|
void CUIIValueTable::RemoveRecordByLable(CString sValue,int nIndex)
|
|
{
|
|
int nCount;
|
|
CString sTemp;
|
|
CStringArray strArValue;
|
|
CUIIValueRecord valurRecord;
|
|
TTUIIValueRecord arvalurRecord;
|
|
|
|
nCount = GetTableLogicSize();
|
|
|
|
int i;
|
|
for(i = 0;i < nCount; i++)
|
|
{
|
|
valurRecord = m_arValueRecord.GetAt(i);
|
|
valurRecord.GetLableValueAr(strArValue);
|
|
sTemp = strArValue.GetAt(nIndex);
|
|
|
|
if(sTemp != sValue)
|
|
{
|
|
arvalurRecord.Add(valurRecord);
|
|
}
|
|
}
|
|
m_arValueRecord.Copy(arvalurRecord);
|
|
}
|
|
|
|
void CUIIValueTable::RemoveRecordByIndex(int nIndex)
|
|
{
|
|
int nCount;
|
|
nCount = GetTableLogicSize();
|
|
if(nIndex > -1 && nIndex < nCount)
|
|
{
|
|
m_arValueRecord.RemoveAt(nIndex);
|
|
}
|
|
}
|
|
|
|
void CUIIValueTable::AddValueRecord(CUIIValueRecord &valueRecord)
|
|
{
|
|
int iSize;
|
|
iSize = valueRecord.GetLableLogicSize();
|
|
|
|
//加入验证
|
|
if(iSize > 0)
|
|
{
|
|
m_arValueRecord.Add(valueRecord);
|
|
}
|
|
}
|
|
|
|
void CUIIValueTable::AddValueRecord(CStringArray &arValue)
|
|
{
|
|
CUIIValueRecord valueRecord;
|
|
valueRecord.SetLableValueAr(arValue);
|
|
AddValueRecord(valueRecord);
|
|
}
|
|
|
|
void CUIIValueTable::SetValueRecord(int nIndex,CUIIValueRecord &valueRecord)
|
|
{
|
|
int nCount;
|
|
nCount = GetTableLogicSize();
|
|
if(nCount == 0)
|
|
{
|
|
m_arValueRecord.Add(valueRecord);
|
|
}
|
|
else if(nIndex < nCount)
|
|
{
|
|
m_arValueRecord.SetAt(nIndex,valueRecord);
|
|
}
|
|
}
|
|
|
|
void CUIIValueTable::SetValueRecord(int nIndex,CStringArray& arValue)
|
|
{
|
|
CUIIValueRecord valueRecord;
|
|
valueRecord.SetLableValueAr(arValue);
|
|
|
|
int nCount;
|
|
nCount = GetTableLogicSize();
|
|
if(nCount == 0)
|
|
{
|
|
m_arValueRecord.Add(valueRecord);
|
|
}
|
|
else if(nIndex < nCount)
|
|
{
|
|
m_arValueRecord.SetAt(nIndex,valueRecord);
|
|
}
|
|
}
|
|
|
|
void CUIIValueTable::InsertValueRecord(int nIndex,CUIIValueRecord &valueRecord)
|
|
{
|
|
int nCount = GetTableLogicSize();
|
|
if(nCount == 0)
|
|
{
|
|
this->AddValueRecord(valueRecord);
|
|
}
|
|
else
|
|
{
|
|
if(nIndex > -1 && nIndex < nCount)
|
|
{
|
|
m_arValueRecord.InsertAt(nIndex,valueRecord);
|
|
}
|
|
}
|
|
}
|
|
|
|
void CUIIValueTable::InsertValueRecord(int nIndex,CStringArray& arValue)
|
|
{
|
|
int nCount = GetTableLogicSize();
|
|
if(nCount == 0)
|
|
{
|
|
this->AddValueRecord(arValue);
|
|
}
|
|
else
|
|
{
|
|
if(nIndex > -1 && nIndex < nCount)
|
|
{
|
|
CUIIValueRecord valueRecord;
|
|
valueRecord.SetLableValueAr(arValue);
|
|
m_arValueRecord.InsertAt(nIndex,valueRecord);
|
|
}
|
|
}
|
|
}
|
|
|
|
void CUIIValueTable::GetValueRecord(int nIndex,CUIIValueRecord &valueRecord)
|
|
{
|
|
int iSize;
|
|
iSize = GetTableLogicSize();
|
|
|
|
if(nIndex > -1 && nIndex < iSize)
|
|
{
|
|
valueRecord = m_arValueRecord.GetAt(nIndex);
|
|
}
|
|
}
|
|
|
|
void CUIIValueTable::GetValueRecord(int nIndex,CStringArray & arValue)
|
|
{
|
|
int iSize;
|
|
CUIIValueRecord valueRecord;
|
|
iSize = GetTableLogicSize();
|
|
arValue.RemoveAll();
|
|
arValue.FreeExtra();
|
|
if(nIndex > -1 && nIndex < iSize)
|
|
{
|
|
valueRecord = m_arValueRecord.GetAt(nIndex);
|
|
valueRecord.GetLableValueAr(arValue);
|
|
}
|
|
}
|
|
|
|
void CUIIValueTable::SetLineXRecord(CStringArray& arXData)
|
|
{
|
|
m_rcLineXRecord.RemoveAll();
|
|
m_rcLineXRecord.SetLableValueAr(arXData);
|
|
}
|
|
|
|
void CUIIValueTable::SetLineXRecord(CUIIValueRecord &valueRecord)
|
|
{
|
|
m_rcLineXRecord.RemoveAll();
|
|
m_rcLineXRecord = valueRecord;
|
|
}
|
|
|
|
void CUIIValueTable::GetLineXRecord(CStringArray& arXData)
|
|
{
|
|
m_rcLineXRecord.GetLableValueAr(arXData);
|
|
}
|
|
|
|
int CUIIValueTable::GetTableLogicSize()
|
|
{
|
|
int iSize;
|
|
iSize = (int)m_arValueRecord.GetSize();
|
|
return iSize;
|
|
}
|
|
|
|
int CUIIValueTable::GetFieldCount()
|
|
{
|
|
return this->m_LableRecord.GetLableLogicSize();
|
|
}
|
|
|
|
//查找是否有对应的记录
|
|
BOOL CUIIValueTable::HasThisRecordByName(CString sFirstValue)
|
|
{
|
|
CString sValue;
|
|
CStringArray strArValue;
|
|
CUIIValueRecord valueRecord;
|
|
|
|
sFirstValue.TrimLeft();
|
|
sFirstValue.TrimRight();
|
|
sFirstValue.MakeUpper();
|
|
|
|
int nSize = GetTableLogicSize();
|
|
int i;
|
|
for(i = 0;i < nSize; i++)
|
|
{
|
|
valueRecord = m_arValueRecord.GetAt(i);
|
|
valueRecord.GetLableValueAr(strArValue);
|
|
if(strArValue.GetSize() > 0)
|
|
{
|
|
sValue = strArValue.GetAt(0);
|
|
|
|
sValue.TrimLeft();
|
|
sValue.TrimRight();
|
|
sValue.MakeUpper();
|
|
if(sValue == sFirstValue)
|
|
{
|
|
return TRUE;
|
|
}
|
|
}
|
|
strArValue.RemoveAll();
|
|
}
|
|
return FALSE;
|
|
}
|
|
|
|
CUIIValueTable& CUIIValueTable::operator =(const CUIIValueTable &valueTable)
|
|
{
|
|
if(this != &valueTable)
|
|
{
|
|
m_LableRecord = valueTable.m_LableRecord;
|
|
m_LableIIRecord = valueTable.m_LableIIRecord;
|
|
m_LableIIIRecord = valueTable.m_LableIIIRecord;
|
|
m_rcLineXRecord = valueTable.m_rcLineXRecord;
|
|
m_arValueRecord.Copy(valueTable.m_arValueRecord);
|
|
}
|
|
return *this;
|
|
}
|
|
|
|
void CUIIValueTable::SetValueRecord(CString sFirstCode, CUIIValueRecord &valueRecord)
|
|
{
|
|
int iSize = GetTableLogicSize();
|
|
|
|
CUIIValueRecord attribRecord;
|
|
CString sFirstValue;
|
|
CStringArray strArValue;
|
|
|
|
int i;
|
|
for(i = 0; i < iSize; i++)
|
|
{
|
|
attribRecord = m_arValueRecord.GetAt(i);
|
|
attribRecord.GetLableValueAr(strArValue);
|
|
if(strArValue.GetSize() > 0)
|
|
{
|
|
sFirstValue = strArValue.GetAt(0);
|
|
if(sFirstValue == sFirstCode)
|
|
{
|
|
m_arValueRecord.SetAt(i,valueRecord);
|
|
return;
|
|
}
|
|
}
|
|
strArValue.RemoveAll();
|
|
}
|
|
//如果没有则加入
|
|
m_arValueRecord.Add(valueRecord);
|
|
}
|
|
|
|
void CUIIValueTable::GetValueRecord(CString sFirstCode, CUIIValueRecord &valueRecord)
|
|
{
|
|
int iSize = GetTableLogicSize();
|
|
|
|
CUIIValueRecord attribRecord;
|
|
CString sFirstValue;
|
|
CStringArray strArValue;
|
|
|
|
int i;
|
|
for(i = 0; i < iSize; i++)
|
|
{
|
|
attribRecord = m_arValueRecord.GetAt(i);
|
|
attribRecord.GetLableValueAr(strArValue);
|
|
if(strArValue.GetSize() > 0)
|
|
{
|
|
sFirstValue = strArValue.GetAt(0);
|
|
if(sFirstValue == sFirstCode)
|
|
{
|
|
valueRecord.SetLableValueAr(strArValue);
|
|
return;
|
|
}
|
|
}
|
|
strArValue.RemoveAll();
|
|
}
|
|
}
|
|
|
|
void CUIIValueTable::RenameRecordTextVlue(int nIndexText,CString sTextValue,CString sProductDwgCode)
|
|
{
|
|
int iSize = GetTableLogicSize();
|
|
CUIIValueRecord valueRecord;
|
|
CString sDwgCode;
|
|
CStringArray strArValue;
|
|
|
|
int i;
|
|
for(i = 0; i< iSize;i++)
|
|
{
|
|
valueRecord = m_arValueRecord.GetAt(i);
|
|
valueRecord.GetLableValueAr(strArValue);
|
|
int nCount = (int)strArValue.GetSize();
|
|
|
|
if(nCount > 0)
|
|
{
|
|
sDwgCode = strArValue.GetAt(nCount - 1);
|
|
if(sProductDwgCode = sDwgCode)
|
|
{
|
|
strArValue.SetAt(nIndexText,sTextValue);
|
|
valueRecord.SetLableValueAr(strArValue);
|
|
m_arValueRecord.SetAt(i,valueRecord);
|
|
}
|
|
}
|
|
strArValue.RemoveAll();
|
|
}
|
|
}
|
|
|
|
void CUIIValueTable::RenameRecordTextVlue(int nIndexText,CString sTextValue)
|
|
{
|
|
int iSize = GetTableLogicSize();
|
|
CUIIValueRecord valueRecord;
|
|
CStringArray strArValue;
|
|
|
|
int i;
|
|
for(i = 0; i< iSize;i++)
|
|
{
|
|
valueRecord = m_arValueRecord.GetAt(i);
|
|
valueRecord.GetLableValueAr(strArValue);
|
|
int nCount = (int)strArValue.GetSize();
|
|
|
|
if(nCount > 0)
|
|
{
|
|
strArValue.SetAt(nIndexText,sTextValue);
|
|
valueRecord.SetLableValueAr(strArValue);
|
|
m_arValueRecord.SetAt(i,valueRecord);
|
|
}
|
|
strArValue.RemoveAll();
|
|
}
|
|
}
|
|
|
|
void CUIIValueTable::ShowToListCtrl(CListCtrl * pListCtrl,int nImage)
|
|
{
|
|
if(::IsWindow(pListCtrl->m_hWnd) == TRUE)
|
|
{
|
|
int nSize = GetTableLogicSize();
|
|
int i = 0,j = 0,nCount = 0;
|
|
CString sText;
|
|
CStringArray arRowInfo;
|
|
|
|
for(i = 0 ;i<nSize;i++)
|
|
{
|
|
arRowInfo.RemoveAll();
|
|
GetValueRecord(i,arRowInfo);
|
|
|
|
nCount = (int)arRowInfo.GetSize();
|
|
for(j = 0;j<nCount;j++)
|
|
{
|
|
sText = arRowInfo.GetAt(j);
|
|
if(j == 0)
|
|
{
|
|
if(nImage != -1)
|
|
{
|
|
pListCtrl->InsertItem(i,sText,nImage);
|
|
}
|
|
else
|
|
{
|
|
pListCtrl->InsertItem(i,sText);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
pListCtrl->SetItemText(i,j,sText);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void CUIIValueTable::RemoveAll(BOOL bRemoveLable)
|
|
{
|
|
m_arValueRecord.RemoveAll();
|
|
|
|
if(bRemoveLable)
|
|
{
|
|
m_LableRecord.RemoveAll();
|
|
m_LableIIRecord.RemoveAll();
|
|
m_LableIIIRecord.RemoveAll();
|
|
m_rcLineXRecord.RemoveAll();
|
|
}
|
|
}
|
|
|
|
void CUIIValueTable::Serialize( CArchive& ar )
|
|
{
|
|
m_LableRecord.Serialize(ar);
|
|
m_LableIIRecord.Serialize(ar);
|
|
m_LableIIIRecord.Serialize(ar);
|
|
m_rcLineXRecord.Serialize(ar);
|
|
|
|
if(ar.IsStoring())
|
|
{
|
|
int nSize = 0,i = 0;
|
|
CString sText;
|
|
CUIIValueRecord rcValue;
|
|
|
|
nSize = (int)m_arValueRecord.GetSize();
|
|
ar << nSize;
|
|
|
|
for(i = 0;i<nSize;i++)
|
|
{
|
|
rcValue = m_arValueRecord.GetAt(i);
|
|
rcValue.Serialize(ar);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
m_arValueRecord.RemoveAll();
|
|
|
|
int nSize = 0,i = 0;
|
|
CString sText;
|
|
CUIIValueRecord rcValue;
|
|
|
|
ar >> nSize;
|
|
|
|
for(i = 0;i<nSize;i++)
|
|
{
|
|
rcValue.Serialize(ar);
|
|
m_arValueRecord.Add(rcValue);
|
|
}
|
|
}
|
|
}
|
|
|
|
void CUIIValueTable::GetReverseValueRecord(int nIndex,CStringArray& arValues)
|
|
{
|
|
CStringArray arTemps;
|
|
this->GetValueRecord(0,arTemps);
|
|
|
|
int nSize = (int)arTemps.GetSize();
|
|
if(nIndex > -1 && nIndex < nSize)
|
|
{
|
|
int nCount = (int)this->m_arValueRecord.GetSize();
|
|
int i = 0;
|
|
CString sText;
|
|
for(i = 0;i<nCount;i++)
|
|
{
|
|
sText = "";
|
|
m_arValueRecord.GetAt(i).GetValue(nIndex,sText);
|
|
|
|
arValues.Add(sText);
|
|
}
|
|
}
|
|
}
|