Page::Create

Description

Create a new page using the supplied template. Supports both *.otw, *.otp as well as *.ogg, *.ogw files.

Syntax

BOOL Create( LPCSTR lpcszTemplate = NULL, int iOption = CREATE_DEFAULT_OPTIONS )

Parameters

lpcszTemplate
[input]The template file name from which to create the page
Pass "Origin" to use the default template, which can be origin.otp, origin.otw, or origin.otm depending on page type.
Pass NULL or an empty string to create without a template.
You may also pass a single window file name *.OGW, *.OGM and *.OGG. This will load the single window file provided
the type matches. For single windows, only CREATE_HIDDEN, CREATE_VISIBLE_SAME, CREATE_VISIBLE and CREATE_HIDDEN are relevant.
iOption
[input]Bitwise flag indicating how window should be created
Must be one of the following:
CREATE_TEMP = Create invisible and destroy on exit of scope.
CREATE_VISIBLE_SAME = Create with a visibility setting the same as what is stored in the template.
CREATE_VISIBLE = Create visible.
CREATE_HIDDEN = Create the page so it appears hidden in Proejct Explorer.
The following flags can be OR'ed with the above options:
CREATE_NO_REMOVE_TEMPLATEPICT = Do not remove template preview picture (graphic object) on loading.
CREATE_NO_GUI_ACCESS = Do not allow access from Project Explorer (only valid with CREATE_HIDDEN).
CREATE_EMPTY = Do not create any child object for page (i.e. do not create 1st layer).
CREATE_NO_DEFAULT_TEMPLATE = When template is specified but not found will fail creation and return FALSE,ignore if lpcszTemplate = NULL.
CREATE_KEEP_LAYER_NAMES = if not used, layer names will be reset, like for worksheets as Sheet1, Sheet2
CREATE_LOAD_1ST_LAYER_ONLY = only the first layer, for WorksheetPage, this is similar to Create of Worksheet class
CREATE_ENUM_EXIST_PAGE = Reset the short name, similar to LabTalk Win -t. If this bit is not set (default), the template's shortname will be kept but may subject to enumeration to avoid duplicate.
CREATE_ENUM_ADD_SEPARATOR = Add underscore between shortname and enumeration index, like Graph_1
CREATE_DEFAULT_OPTIONS = (CREATE_VISIBLE | CREATE_KEEP_LAYER_NAMES)

Return

Returns TRUE for success and FALSE for failure.

Examples

EX1

//Create a new workbook
void Page_Create_ex1()
{
        WorksheetPage wksPg;
        wksPg.Create("Origin");
}

EX2

int Page_Create_ex2(string strTemplateName = "Origin", BOOL bNoDefaultTemplate = TRUE)
{
    DWORD dwCntrl = CREATE_VISIBLE;
    if( bNoDefaultTemplate )
        dwCntrl |= CREATE_NO_DEFAULT_TEMPLATE;
        
    GraphPage gp;
    if( gp.Create(strTemplateName, dwCntrl) )
    {
        printf("Created a graph named %s\n", gp.GetName());
        if( !bNoDefaultTemplate && !strTemplateName.IsEmpty() )
            printf("Not sure if specified template %s is used, it may be missing and default was substituded\n", strTemplateName);
    }
    else
        printf("Template %s not found, can not create graph page\n", strTemplateName);
    return 0;
}

EX3

//This example loads an OGW file from the samples folder and set the newly 
//loaded page's short name. If you repeated run load_ogw, you will see the 
//new page name will start to enumerate as Test1, Test2 etc.

void Page_Create_ex3(BOOL bHideIt = false, string strNewName="Test")
{
        string strPath = GetAppPath(true);
        strPath += "Samples\Curve Fitting\Single Peak Fit.ogw";
        WorksheetPage page;
        page.Create(strPath, CREATE_HIDDEN);
        printf("%s\n", strPath);
        if(!page)
        {
                out_str("failed to be loaded");
                return;
        }
        page.Rename(strNewName);
        printf("is loaded, new Page Name is %s\n", page.GetName());
        if(!bHideIt)
                page.SetShow();
}

EX3

// use CREATE_EMPTY to create a page without 1st default layer
void Page_Create_ex3()
{
    WorksheetPage page;
    page.Create(NULL, CREATE_EMPTY);
    printf("Page Name is %s\n", page.GetName());    
    
    if(0 == page.Layers.Count())
    {    
        page.AddLayer("Test");
        
        int index = 0;
        foreach(Layer lay in page.Layers)
        {
            printf("layer %d named %s\n", index, lay.GetName());
            index++;
        }
    }
    else
        printf("Error, fail to create empty workbook\n");
    
    page.SetShow();
}

Remark

Create a new page using the supplied template and attach it to the Origin C object. The Create method should only be called from derived classes such as GraphPage, MatrixPage, WorksheetPage, and LayoutPage. A worksheet page created without a template will not have columns. A matrix page created without a template will have no MatrixObject. Creating a page without specifying a template is faster than when creating one from a template. Code to add needed columns and MatrixObjects can be subsequently executed.

See Also

PageBase::PageBase, Page::Page

Header to Include

origin.h