3.2.3 Worksheet Access Embedded Graphs


Version Info

Minimum Origin Version Required: Origin 8 SR0

List Embedded Graphs

List all embedded graph pages in the active workbook, along with embedding information(Worksheet, Row, Column).

void get_embedded_graphs()
{
    WorksheetPage wpg = Project.Pages();
    if( wpg )
    {
        foreach(Layer ly in wpg.Layers)
        {
            Worksheet wks = ly;
            foreach(Page pgEmbedded in wks.EmbeddedPages)
            {
                Worksheet   wksTest;
                int         nRow, nCol;
                bool bRet = pgEmbedded.GetEmbeddingInfo(wksTest, &nRow, &nCol); 
                // TRUE if the object is embedded in a Datasheet, otherwise FALSE.
                if( bRet )
                {
                    printf("%s in [%s]%s!%s[%d:%d]\n", pgEmbedded.GetName(), wksTest.GetPage().GetName(), 
                    	wks.GetName(), wks.Columns(nCol).GetName(), nRow+1, nRow+1);      
                }
            }
        }
    }
}

Check Graph Page if Embedded

PageBase::GetEmbeddingInfo also can used to check if page is embedded by return value like below.

void page_is_embedded(string strGraph)
{
	GraphPage gp(strGraph);
	if( !gp )
	{
		out_str(strGraph + " is not a valid graph");
		return;
	}
	
	if( gp.GetEmbeddingInfo() ) // TRUE if the object is embedded in a Datasheet, otherwise FALSE.
	{
		out_str(strGraph + " is embedded graph");
	}
	else
	{
		out_str(strGraph + " is NOT embedded graph");
	}
}

Sparklines

// example to show how to create/update sparklines on all 
// columns on the current worksheet with alternating blue/red colors
void sparkline_colors()
{
	DWORD dwCntrl = EMBEDGRAPH_IN_LABELS | EMBEDGRAPH_HIDE_AXES | EMBEDGRAPH_HIDE_LEGENDS 
| EMBEDGRAPH_HIDE_SPECTRUMS | EMBEDGRAPH_HIDE_TEXT_OBJS | EMBEDGRAPH_SPARKLINE;
	Worksheet wks = Project.ActiveLayer();
	if(!wks)
		return;
	
	//add this will require theme_utils.c to be added to workspace
	//int nRowHeight = 20
	//wks_set_col_label_heights(wks, RCLT_SPARKLINE, nRowHeight, false);
	
	waitCursor hrGlass;
	for(int nC = 0; nC < wks.GetNumCols(); nC++)
	{
		if(wks.Columns(nC).GetType() != OKDATAOBJ_DESIGNATION_Y || is_col_all_text(wks, nC) > 0)
			continue;
		
		GraphPage gp;
		DataPlot dp = plot_col(wks, nC, gp, IDM_PLOT_LINE, true, "sparkline_label", true, 0);
		int ncolor = nC%2? SYSCOLOR_BLUE:SYSCOLOR_RED;
		dp.SetColor(ncolor);
		wks.EmbedGraph(RCLT_SPARKLINE, nC, gp, dwCntrl);
	}
}