#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 ;iInsertItem(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; for(i = 0;iGetValueRecord(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