Fill Extracted Data Cells with Color

Version Info

Minimum Origin Version Required: Origin 8.0 SR0

Description

The following example shows how to find cells with LabTalk testing condition expression from a worksheet. And then fill these cells with specified color, also set the font color.

Example

In the example, the string variable strLTRunBeforeLoop is used to set LabTalk script command before running the testing condition. Here it is defined as each column dynamically in the for-loop. The strCondition is used to specified LabTalk testing condition expression.

Before running this example, run the function Before_Running first to create a worksheet with uniform data.

void Fill_Cell_Color()
{
        Worksheet wks = Project.ActiveLayer(); // get the active worksheet
        
        if(!wks)   // if the active worksheet not exist, return
        {
                return;
        }
        
        int nNumCols = wks.GetNumCols();    // get column number
        
        DataRange dr;   // data range to hold the items which satisfy condition
        
        // loop each column to find those items that satisfy the condition
        for(int nCol=0; nCol<nNumCols; nCol++)
        {
                // LabTalk script to be executed before the looping start
                string strLTRunBeforeLoop = "range a = " + (string)(nCol+1);   // define each column range for LabTalk
                
                // LabTalk conditional expression involving columns in the worksheet
                string strCondition = "a>=0.2 && a<=0.6";
                
                vector<uint> vuRowIndices;   // vector for row indices
                
                // get the row indices which satisfy the condition
                int nNumRowIndices = wks.SelectRows(strCondition, vuRowIndices, 0, -1, -1, strLTRunBeforeLoop);
                
                if(nNumRowIndices==0)    // no item satisfies the condition
                        continue;
                else
                {     
                        // add those items, which satisfy the condition, to the data range
                        for(int nRowIndex=0; nRowIndex<vuRowIndices.GetSize(); nRowIndex++)
                        {
                                dr.Add("", wks, vuRowIndices[nRowIndex], nCol, vuRowIndices[nRowIndex], nCol);
                        }

                }
        }
        
        Tree trFormat;    // define format tree
        trFormat.Root.CommonStyle.Fill.FillColor.nVal = SYSCOLOR_RED;   // fill color = red
        trFormat.Root.CommonStyle.Color.nVal = SYSCOLOR_BLUE; // font color = blue
        
        if(0==dr.UpdateThemeIDs(trFormat.Root))   // no error
                bool bRet = dr.ApplyFormat(trFormat, true, true);   // return true if apply format successfully
}
void Before_Running()
{
        // prepare worksheet with data to do extract
        Worksheet wks;
        wks.Create();
        wks.SetSize(30, 5); // set worksheet with 3o rows and 5 columns  
 
        // set uniform data for all columns
        for(int nCol=0; nCol<wks.GetNumCols(); nCol++)
        {
                Dataset ds(wks, nCol);
                ds.Uniform(wks.GetNumRows());
        }
}