2.2.3.6.15 Dataset::Update

Description

Update an Origin C Dataset object from an Origin data set or vice-versa.

Syntax

void Update( BOOL bFromOrigin, int mode = -1 )

Parameters

bFromOrigin
[input] TRUE updates the Origin C Dataset object from the Origin data set, FALSE updates the Origin dataset from an Origin C Dataset object.
mode
[input]Dataset update mode, used only if bFromOrigin=FALSE. Supported values are
REDRAW_NONE, do not update
REDRAW_REALTIME_WKS, similar to REDRAW_REALTIME_SCOPE, but redraw the entire worksheet
REDRAW_REFRESH, do a simple refresh of the data
REDRAW_REALTIME_SCOPE, this is used to do realtime drawing for the entire range of data.
To see effect in plots, must set dataplots to animate mode

Return

Examples

EX1

///Update OC when Origin Changed.
// a Worksheet with at least 1 column must exist prior to execution
void Dataset_Update_ex1()
{
    Worksheet wks=Project.ActiveLayer();
    if (wks)
    {     
        Dataset    dsA(wks, 0);
        string strWksColname = dsA.GetName();
        dsA.SetSize(10);
        dsA=1;
        string strExecute = "set " + strWksColname + " -e 20;" + strWksColname + "=2;";
        LT_execute(strExecute); // Note Dataset size is not updated but Dataset values change in Local Variables windows of Debug mode 
        dsA.Update(TRUE); // Note Dataset dsA size is now updated in Local Variables windows of Debug mode
        ASSERT(dsA.GetSize()==20);
    }
}

EX2

///Update Origin when OC data changed.
// Assumes a worksheet with  2 columns
// This example shows how to update Origin from inside Origin C program before it returns
void Dataset_Update_ex2()
{
    Worksheet wks=Project.ActiveLayer();
    if (wks)
    {
        Dataset aa(wks, 0);
        string strWksColname = aa.GetName();
        // in case column is empty
        if(aa.GetSize()<1)
        {
            aa.SetSize(10);
            aa=0;
        }
        
        aa[0]+= 1;
        aa.Update(FALSE, REDRAW_REFRESH);
        MessageBox(GetWindow(),strWksColname + " increment 1, click OK to increment again");
        aa[0]+=1;
    }
}

EX3

// Demonstrate the usage of REDRAW_REALTIME_SCOPE and REDRAW_REALTIME_WKS
// Assumes:
//    1) Worksheet's first column is filled with row numbers
//    2) Worksheet's A(X) vs. B(Y) is plotted as line plot
//    3) The line plot is set to animate mode so that the effect is fully visualized
//       (set plot active and then execute LabTalk script command "set %C -an 1")
/// Realtime update Origin from OC
void Dataset_Update_ex3()
{
	int imax = 20;
	Worksheet wks=Project.ActiveLayer();
	if (wks)
	{     		
		Dataset aa(wks, 0);
		int    nMaxRows = 10;
		if ( aa.GetSize() < nMaxRows )
		{
			aa.SetSize(nMaxRows);
			aa=0;
		}
		
		int ic = 0;//current cell
		
		for ( int ii = 0; ii < imax; ii++ )
		{
			for(int jj = 0; jj < nMaxRows; jj++)
			aa[jj] = 1;
			
			aa[ic++] = 2;
			if(ic >= nMaxRows)
			ic = 0;
			//aa.Update(FALSE, REDRAW_REALTIME_WKS);
			aa.Update(FALSE, REDRAW_REALTIME_SCOPE);
			LT_execute("sec -w 0.1;");// hard wait 
		}
	}
}

Remark

Update an Origin C Dataset object from an Origin data set or update an Origin data set from an Origin C Dataset object. The number of elements and memory allocated are primarily affected by this method.

See Also

vectorbase::Append, Matrix::Update

Header to Include

origin.h