grid++ report 在不使用数据库的情况下如何使用的问题;
看grid++ report的例子都是从数据库中获取记录的,没有从外部输入数据的情况,参考grid++ report 5.6的例子;
class CScatterChartEvent :public CGridppReportEventImpl
{
public:
virtual void Initialize(void)
{
m_pDetailChart = m_pOwnerDlg->m_pGridppReport->ControlByName("DetailChart")->AsChart;
m_pRecordset = m_pOwnerDlg->m_pGridppReport->DetailGrid->Recordset;
m_pCategoryIDField = m_pOwnerDlg->m_pGridppReport->FieldByName("CategoryID");
m_pDetailChart->SeriesCount = 1;
m_pDetailChart->SeriesLabel[0] = "XX曲线";
}
virtual void CScatterChartEvent::FetchRecord(void)
{
for (unsigned int i=0;i<m_pOwnerDlg->m_AllInfo.size();i++)
{
m_pRecordset->Append();
m_pCategoryIDField->Value=i;
m_pRecordset->Post();
}
}
//如果一个图表要多次输出,就应该在每次输出图表所对应的事件中为图表提供数据,在内容行中的图表应该在 ProcessRecord 事件中提供图表数据;
//在分组头或分组尾中的图表应该分别在 GroupBegin 与 GroupEnd 事件中提供图表数据。
//如果是在ProcessRecord、GroupBegin 或 GroupEnd 事件中提供图表数据,
//在赋值之前必须调用图表的 PrepareSnapShort 方法,在赋值完成之后必须调用图表的 SnapShort方法。
virtual void ProcessRecord(void)
{
m_pDetailChart->PrepareSnapShot();
m_pDetailChart->EmptyXYValue();
list<LDIIP_TrigInfo>::iterator iter;
int i=0;
for(iter=m_pOwnerDlg->m_AllInfo[m_pOwnerDlg->m_Index].begin();iter!=m_pOwnerDlg->m_AllInfo[m_pOwnerDlg->m_Index].end();iter++)
{
//
m_pDetailChart->AddXYValue(0, i, (*iter)._speed);
i++;
}
m_pDetailChart->SnapShot();
};
CPrintSpeedGraphDlg *m_pOwnerDlg;
IGRRecordsetPtr m_pRecordset;
IGRChartPtr m_pDetailChart;
IGRFieldPtr m_pCategoryIDField;
IGRFieldPtr m_pCategoryNameField;
IGRFieldPtr m_pAmtFields[12];
};
其中vector<list <TrigInfo>> m_AllInfo; 从外部将数据传入散列连线图;