コード例 #1
0
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;
 
}
コード例 #2
0
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;
}
コード例 #3
0
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();
}