3.2.7.2 Column Format


Version Info

Minimum Origin Version Required: Origin8 SR0

Get Column Type

You can use Column::GetType to get the type designator of a column.

Set Column Type

This example shows how to Set the type of column in worksheet.

void column_set_type()
{
	Worksheet wks;
    wks.Create("Origin", CREATE_VISIBLE);
    
    wks.Columns(0).SetType(OKDATAOBJ_DESIGNATION_X); // An X column
    
    wks.AddCol();
    wks.Columns(2).SetType(OKDATAOBJ_DESIGNATION_Y); // A Y column
    // Note that sequence is forced by internal check that won't allow X Err without Y column in worksheet
    wks.Columns(1).SetType(OKDATAOBJ_DESIGNATION_X_ERROR); // An X Err column
    
    wks.AddCol();
    wks.Columns(3).SetType(OKDATAOBJ_DESIGNATION_ERROR); // A Y Err column
    
    wks.AddCol();
    wks.Columns(4).SetType(OKDATAOBJ_DESIGNATION_L); // A Label column
    
    wks.AddCol();
    wks.Columns(5).SetType(OKDATAOBJ_DESIGNATION_Z); // A Z column
    
    wks.AddCol();
    wks.Columns(6).SetType(OKDATAOBJ_DESIGNATION_NONE); // A Disregard column
}

Get Column Format

You can use Column::GetFormat to get the type of format of a column.

Set Column Format

This example shows how to set the format of column in worksheet.

void column_set_format_ex()
{
	Worksheet wks;
	wks.Create("Origin");
	
	//set the format of column 1 as Numeric
	BOOL bRet = wks.Columns(0).SetFormat(OKCOLTYPE_NUMERIC); 
	if( bRet )
		printf("Format of column %s is of type %u\n", wks.Columns(0).GetName(), wks.Columns(0).GetFormat());
	else 
		printf("Failed to set format of column %s!\n", wks.Columns(0).GetName());
	
	//set the format of column 2 as text
	bRet = wks.Columns(1).SetFormat(OKCOLTYPE_TEXT);
    if( bRet )
		printf("Format of column %s is of type %u\n", wks.Columns(0).GetName(), wks.Columns(0).GetFormat());
	else 
		printf("Failed to set format of column %s!\n", wks.Columns(0).GetName());
}

Get Column SubFormat

You can use Column::GetSubFormat to get the type of subformat of a column.

Set Column SubFormat

This example shows how to set the subformat of column in worksheet.

void column_set_subformat_ex()
{
	Worksheet wks;
    wks.Create("Origin");
    
    wks.Columns(0).SetFormat(OKCOLTYPE_DATE); // Column Format is DATE
    BOOL bRet = wks.Columns(0).SetSubFormat(13); // The 14th SubFormat (value = 13) of DATE is yyMMdd HH:mm:ss
    
    wks.Columns(1).SetFormat(OKCOLTYPE_NUMERIC); // Column Format is NUMERIC
    bRet = wks.Columns(1).SetSubFormat(3); // The 4th SubFormat (value = 3) of NUMERIC is Decimal: 1,000
}

Set Column Justification

This example shows how to set justification of a column. Please refer to Column::SetJustify for more details.

//Before running this code, Worksheet with at least one column must exist in project.
void column_set_justify_ex()
{
	Worksheet wks = Project.ActiveLayer();
	if(!wks)
	{
		printf("Error. Please active worksheet before running!");
		return;
	}
	
	if( 0 == wks.GetNumCols())
	{
		printf("Error. No columns to justify in the active worksheet!\n");
		return;
	}
	
	int iJustify = COL_JUSTIFY_RIGHT;
	bool bRet = wks.Columns(0).SetJustify(iJustify);	// Set justification to right for column 1
	
	if( bRet )
		printf("Successfully set justify!\n");
	else
		printf("Failed to set justify!\n");
}

Set Column Internal Data Type

This example shows how to set the column internal data type. Please refer to DataObject::SetInternalDataType for more details.

void column_set_internal_data_ex()
{
    Worksheet wks = Project.ActiveLayer();
    
    int nFormat = OKCOLTYPE_NUMERIC;
    int nType = FSI_SHORT;
 
    foreach(Column col in wks.Columns)
    {
    	col.SetFormat(nFormat);     	
    	col.SetInternalDataType(nType, OCD_RESET_VIEW | OCD_RESTORE);
	}    
}

Set Column Digit Mode

This example shows how to set the display mode used for numbers in a column. Please refer to Column::GetDigitMode for more details.

//Before running this code, Worksheet with at least one column must exist in project.
void column_set_digit_mode_ex()
{
	Worksheet wks = Project.ActiveLayer();
	if(!wks)
	{
		printf("Error. Please active worksheet before running!");
		return;
	}

	if( 0 == wks.GetNumCols())
	{
		printf("Error. No columns exist in the active worksheet!\n");
		return;
	}
	
	int iDigitMode = DIGITS_DECIMAL; 	// set display mode decimal
    bool bRet = wks.Columns(0).SetDigitMode(iDigitMode);	// Set the display mode of column 1
    
    if( bRet )
    	printf("Successfully set display mode for column %s\n", wks.Columns(0).GetName());
    else
    	printf("Failed to set displey mode for column %s\n", wks.Columns(0).GetName());
}

Set Column Digit Value

This example shows how to set the digit value for the numeric display mode.

// Before running this code, Worksheet with at least one column must exist in project
void Column_Set_Digits_Ex1()
{
    Worksheet wks = Project.ActiveLayer();
	if(!wks)
	{
		printf("Error. Please active worksheet before running!");
		return;
	}

	if( 0 == wks.GetNumCols())
	{
		printf("Error. No columns exist in the active worksheet!\n");
		return;
	}
	
	wks.Columns(0).SetDigitMode(DIGITS_DECIMAL);
    bool bRet = wks.Columns(0).SetDigits(10);	// set the number of digits in column 1 to 10
    if( bRet )
    	printf("Successfully set digits for column %s\n", wks.Columns(0).GetName());
    else
    	printf("Failed to set digits for column %s\n", wks.Columns(0).GetName());   
}

Set Column Custom Display

This example shows how to set the custom date display format. This action is same as setup Custom Date Formats in Preference: Options : Miscellaneous.

// Before running this code, Worksheet with at least one column must exist in project
void column_set_custom_display_ex()
{
    Worksheet wks = Project.ActiveLayer();
	if(!wks)
	{
		printf("Error. Please active worksheet before running!");
		return;
	}
 
    Column col(wks, 0);
    if( col )
    {
        col.SetFormat(OKCOLTYPE_DATE);
        col.SetSubFormat(LDF_OBJ_CUSTOM); // for "Custom Display"
        bool bRet = col.SetCustomDisplay("dd-mm-yy");
        
        if( bRet )
            printf("The custom display format of Column %u is %s\n", col.GetIndex()+1, col.GetCustomDisplay());
        else
            printf("Fail to set custom format to this column\n");
    }
}

Check Column Is Even Sampling

This example shows how to check if the column has even sampling and get the sampling information.

// Before running this code, Worksheet with at least one column must exist in project
void column_is_even_sampling_ex()
{
    Worksheet wks = Project.ActiveLayer();
	if(!wks)
	{
		printf("Error. Please active worksheet before running!");
		return;
	}

    Column col = wks.Columns(0);
    if ( !col )
    {
    	printf("Error. No columns in the active worksheet!\n");
    	return;
    }
 
    double dX0, dXInc;		// used to receive the starting X value and the X increment value, if any
    string strXUnits, strXLongName;		//used to receive the X units name and the X long name, if any
    bool bRet = col.IsEvenSampling(&dX0, &dXInc, strXUnits, strXLongName);
    
    if( bRet )
    {
        printf("Column %s is even sampling.\n", col.GetName());
        printf("Start == %f\nIncrement == %f\nUnits == %s\nLong Name == %s\n",
            dX0, dXInc, strXUnits, strXLongName);	// print the the sampling information
    }
    else
        printf("Column %s is not even sampling.\n", col.GetName());
}

Check Column Is Write Protected

This example shows how to determine if a column is write protected.

// Before running this code, Worksheet with at least one column must exist in project
void column_is_write_protected_ex()
{
    Worksheet wks = Project.ActiveLayer();
	if(!wks)
	{
		printf("Error. Please active worksheet before running!");
		return;
	}
	if( 0 == wks.GetNumCols())
	{
		printf("Error. No columns in the worksheet!\n");
		return;
	}
    BOOL bRet;
    // check each column in the worksheet if it's write protected.
    foreach(Column col in wks.Columns)
    {
    	bRet = col.IsWriteProtected(); 	
        if( bRet )
            printf("Column %s is WRITE PROTECTED\n", col.GetName());
        else
            printf("Column %s is NOT write protected\n", col.GetName());
    }
}