vs2008 MFC 對話方塊 grid++ report 使用經驗總結

smilestone322發表於2014-11-18

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; 從外部將資料傳入雜湊連線圖;

 

相關文章