List Worksheets and Columns in Workbook

Version Info

Minimum Origin Version Required: Origin 8 SR0

List Worksheets and Columns in Workbook dynamically

In the active worksheet page, list all the worksheets in the listbox, After selecting the workswheet, all the columns of the selected worksheet will list in the second listbox.

List Worksheets and Columns.png

Example

#include <GetNbox.h>
void Get_worksheet_column()
{
    GETN_BOX(trRoot)   // construct a GetN_Box name "trRoot"
  
    // list box
    GETN_LIST(wks, "Worksheet", 0, "A")    
    // list box
    GETN_LIST(col, "Column", 0, "B")
  
    if( GetNBox(trRoot, node_event, "Example", NULL, GetWindow()) )
    return;
}

int node_event(TreeNode& trRoot, int nRow, int nEvent, DWORD& dwEnables,      
        LPCSTR lpcszNodeName, WndContainer& getNContainer, string& strAux, 
        string& strErrMsg)
{
    if( GETNE_ON_INIT == nEvent )
    {
        WorksheetPage pg = Project.Pages(); //Get the active page
        if ( !pg )                                                  //Check if the worksheet page exists
                return 0;
        
                vector<string> saNames;
                foreach(Layer ly in pg.Layers)           
        {
                string strName;
            ly.GetName(strName);                 //Get worksheet name
            saNames.Add(strName);                        //Add worksheet name to string array
        }
        string str;
        str.SetTokens(saNames, '|');                //Copy a string array to a str
        
        trRoot.wks.SetAttribute(STR_COMBO_ATTRIB, str);//Show worksheet name in the listbox
    }
    if( GETNE_ON_INIT == nEvent || 0 == lstrcmp(lpcszNodeName, "wks") )
    {
        WorksheetPage pg = Project.Pages(); //Get the active page
        if ( !pg )
                return 0;
        
                Worksheet wks = pg.Layers(trRoot.wks.nVal);
        vector<string> saNamescol;
        foreach(Column cc in wks.Columns)
        {
                string strNamecol, strDesig;
                strNamecol = cc.GetLongName();      //Get columnn longname
                if ( strNamecol.IsEmpty() )
                                cc.GetName(strNamecol);
                
                int        nType = cc.GetType();       //Get columns designations
                switch ( nType )
                {
                case OKDATAOBJ_DESIGNATION_X:
                        strDesig = 'X';
                        break;
                case OKDATAOBJ_DESIGNATION_Y:
                        strDesig = 'Y';
                        break;
                case OKDATAOBJ_DESIGNATION_Z:
                        strDesig = 'Z';
                        break;
                case OKDATAOBJ_DESIGNATION_NONE:
                        strDesig = "None";
                        break;
                case OKDATAOBJ_DESIGNATION_ERROR:
                        strDesig = "YErr";
                        break;
                case OKDATAOBJ_DESIGNATION_L:
                        strDesig = 'L';
                        break;
                case OKDATAOBJ_DESIGNATION_X_ERROR:
                        strDesig = "XErr";
                        break;
                }
                saNamescol.Add(strNamecol + " (" + strDesig + ")");
        }

        string str2;
        str2.SetTokens(saNamescol, '|');
        trRoot.col.SetAttribute(STR_COMBO_ATTRIB, str2);
    }
    return 0;   
}