ReportBase
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); }
ReportTree.h
Name | Brief | Example |
---|---|---|
CreateTable | Create one table for the report | |
ReportBase | Constructor |
|