CXTPReportRecord* CReportCtrl::TransferAddRecord(void) { ASSERT (m_pAddOpRecord != NULL); CXTPReportRecord *pRec = new CXTPReportRecord(); for (int i=0; i<m_nColCount; ++i) { const ColInfo &col = m_cols[i]; if (col.fmt != FmtIdOnly) { CXTPReportRecordItem *pItem = new CXTPReportRecordItem(); if (!col.check) { pItem->SetCaption(m_pAddOpRecord->GetItem(i)->GetCaption(NULL)); } else { pItem->SetEditable(col.editable); pItem->HasCheckbox(col.check); pItem->SetChecked(m_pAddOpRecord->GetItem(i)->IsChecked()); } pRec->AddItem(pItem); } } PutRecordAux(pRec); GetRecords()->InsertAt(m_pAddOpRecord->GetIndex(),pRec); ClearAddRecord(); Populate(); return pRec; }
CXTPReportRecordItem* CReportCtrl::RecordItemFromCol(const ColInfo &c,const _variant_t &v) { CXTPReportRecordItem *pItem = new CXTPReportRecordItem(); pItem->SetEditable(c.editable); if (!c.check) { pItem->SetCaption(CString(v)); } else { pItem->HasCheckbox(c.check); pItem->SetChecked((bool)v); } return pItem; }
void CReportCtrl::FillRecordset(_RecordsetPtr &rst,FillRecordAux funcAux) { if (rst != NULL) while (!rst->adoEOF) { FieldsPtr fields = rst->Fields; CXTPReportRecord *pRec = new CXTPReportRecord(); for (int i=0; i<m_nColCount; ++i) { if (m_cols[i].fmt ==FmtIdOnly) pRec->SetBookmark(fields->Item[m_cols[i].field]->Value); else pRec->AddItem(RecordItemFromCol(m_cols[i],fields->Item[m_cols[i].field]->Value)); } PutRecordAux(pRec); if (funcAux != NULL) funcAux(fields,pRec); AddRecord(pRec); rst->MoveNext(); } if (m_nOpFlag & OpAdd) { m_pAddOpRecord = new CXTPReportRecord(); for (int i=0; i<m_nColCount; ++i) { const ColInfo &col= m_cols[i]; if (m_cols[i].fmt != FmtIdOnly) { CXTPReportRecordItem *pItem = new CXTPReportRecordItem(); pItem->HasCheckbox(col.check); m_pAddOpRecord->AddItem(pItem); } } PutAddRecordAux(); AddRecord(m_pAddOpRecord); } Populate(); }