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
|