Files
envi-code/SourceCode/Code2026/tg_shs/shs_sqlite/UIIValueTable.cpp
T
2026-09-28 15:28:50 +08:00

538 lines
10 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);
}
}
}