2.2.3.11 ReportBase


Name

ReportBase

Remark

Hierarchy

Examples

Active a worksheet and run "report_ex"

#include <Origin.h>
#include <ReportTree.h>
#include <..\Originlab\theme_utils.h>

enum{
	RTID_TABLE1 = 10,
	RTID_TABLE2 = 20,
	RTID_TABLE3 = 30,
	RTID_TABLE4 = 40,
	RTID_TABLE5 = 50,
};

enum{
	RDID_DATA1 = 10,
};

ReportTable ReportTable_AddColumn_ex(ReportBase& table, const int id)
{
	ReportTable rtData = table.CreateTable("data"+(int)id, "AddColumn Example", id);	
	if(rtData)
	{	
		vector<string> vs = {"A", "B", "C"};
		rtData.AddColumn(vs, "xfactor", id+1, "PlotIntoLayer", OKDATAOBJ_DESIGNATION_X);
		
		vector vv = {0.12, 0.34, 0.56};
		rtData.AddColumn(vv, "yfactor", id+2, "PlotIntoLayer", OKDATAOBJ_DESIGNATION_Y);
		rtData.AddColumn(vv*5, "yfactor2", id+3, "PlotIntoLayer", OKDATAOBJ_DESIGNATION_Y);
	}
	
	return rtData;
}

void ReportTable_AddRow_ex(ReportBase& table, const int id)
{
	ReportTable rt = table.CreateTable("table"+(int)id, "AddRow Example 1", id);	
	if(rt)
	{
		rt.AddRow("row1", "AddRow", "This is AddRow", id+1);
		rt.AddRow("row2", "AddRow", 12345.6789, id+2);
		format_report_table(rt, true);		
	}
}

void ReportTable_AddRow_ex2(ReportBase& table, const int id)
{
	ReportTable rt = table.CreateTable("table"+(int)id, "AddRow Example 2", id);	
	if(rt)
	{
		vector<string> vsLabel = {"A test", "B test", "C test"};
		vector vv = {0.12, 0.34, 0.56};
		rt.AddRow("row1", vv, "Factor A(Light)", vsLabel, NULL, id+1, "Factor B(100mg)");
		rt.AddRow("row2", vv+5, "Factor A(Light)", vsLabel, NULL, id+2, "Factor B(200mg)");
		rt.AddRow("row3", vv*0.5, "Factor A(Moderate)", vsLabel, NULL, id+3, "Factor B(100mg)");
		rt.AddRow("row4", vv*10, "Factor A(Moderate)", vsLabel, NULL, id+4, "Factor B(200mg)");
	}
}

void ReportData_PlotIntoLayer_ex(ReportBase& table, const int id, const ReportData& rd, const int rdid)
{
	ReportTable rtGraph = table.CreateTable("graph"+(int)id, "SetCell Example", id, -1, 1);	
	if(rtGraph)
	{
		GraphPage gp;
		gp.Create("origin", CREATE_HIDDEN);
		rtGraph.SetCell(0, 0, gp, EMBEDGRAPH_MOVE_IF_ALREADY_EMBEDDED);
		rtGraph.SetCell(-1, 0, "World");
		rd.PlotIntoLayer(gp.Layers(0), rdid, NULL);
	}
}

void ReportData_GetDataRange_ex(ReportBase& table, const int id, const ReportData& rd, const int nTableID)
{
	GraphPage gp;
	gp.Create("origin", CREATE_HIDDEN);
	
	ReportTable rtPlot = table.CreateTable("graph"+(int)id, "GetDataRange Example", id);
	rtPlot.SetCell(0, 0, gp, EMBEDGRAPH_MOVE_IF_ALREADY_EMBEDDED);
	
	TreeNode trTable = tree_get_node_by_id(rd, nTableID, true);
	if(trTable)
	{
		int nYCount = trTable.GetNodeCount() - 1;//one X
		vector<int> nYID;
		nYID.Data(nTableID+1, nTableID+nYCount);
		
		DataRange drData;
		if( rd.GetDataRange(drData, nTableID, nTableID+1, nYID, nYCount, TRUE, FALSE, TRUE) )
		{	
			GraphLayer gl = gp.Layers(0);
			gl.AddPlot(drData);
			gl.Rescale();
		}
	}
}

void ReportData_GetWorksheet_ex(ReportData& rdData)
{
	if(!rdData){ return; }
	Worksheet wksReport;
	rdData.GetWorksheet(wksReport);
	if(!wksReport)
		return;
	wksReport.AutoSize();
}

void report_ex()
{
	Worksheet wksActive = Project.ActiveLayer();
	if(!wksActive)
	{
		out_str("No active worksheet");
		return;
	}
	
	WorksheetPage wp = wksActive.GetPage();
	int nn = wp.AddLayer("Report1");	
	if(nn < 0)
	{
		out_str("Fail to create report sheet");
		return;
	}	
	Worksheet wksRt = wp.Layers(nn);
	
	nn = wp.AddLayer("Report Data1");	
	if(nn < 0)
	{
		out_str("Fail to create data sheet");
		return;
	}	
	Worksheet wksRd = wp.Layers(nn);
	
	Tree trReportData, trReportTree;
	ReportTree rt(trReportTree);
	ReportData rd(trReportData);
	
	rd.SetWorksheet(wksRd);	
	ReportTable_AddColumn_ex(rd, RDID_DATA1);
	
	ReportTable rt1 = ReportTable_AddColumn_ex(rt, RTID_TABLE1);
	if(rt1)
		format_report_table(rt1, true);		
	
	ReportTable_AddRow_ex(rt, RTID_TABLE2);		
	ReportTable_AddRow_ex2(rt, RTID_TABLE3);
	
	ReportData_PlotIntoLayer_ex(rt, RTID_TABLE4, rd, RDID_DATA1);
	
	ReportData_GetDataRange_ex(rt, RTID_TABLE5, rd, RDID_DATA1);
	
	rt.GenerateReport(wksRt, true);	
	wksRt.AutoSize();
	
	ReportData_GetWorksheet_ex(rd);
}

Header to Include

ReportTree.h

Reference

Members

Name Brief Example
CreateTable Create one table for the report
ReportBase Constructor