3.2.3 Get Set Data Range Selection



Get Data Range Selection

Minimum Origin Version Required: Origin8 SR0

This example shows how to get data range selection in a worksheet.

//Before run this example, make sure you have selected multiple ranges in the active worksheet
void wks_get_datarange_selection_ex()
{
    //Make sure the active worksheet has existed
	Worksheet wks = Project.ActiveLayer();
    if(!wks)
    {
    	printf("Error. Please active worksheet before running!");
    	return;
    }
    
 	vector<int> vr1, vc1, vr2, vc2;
    int iRegions = wks.GetSelectedRange(vr1, vc1, vr2, vc2);	//get the number of regions
    
    if( 0 == iRegions )
    {
    	printf("No range selected in the active worksheet %s!", wks.GetName());
    	return;
    }
    
    for(int ii = 0 ; ii < iRegions ; ii++)
    {
        printf("Region %u : R%d C%d : R%d C%d\n", ii, vr1[ii], vc1[ii], vr2[ii], vc2[ii]);
    }
}

Set Data Range Selection

Minimum Origin Version Required: Origin 8 SR0

This example shows how to select specified data range in the worksheet.

void wks_set_datarange_selection_ex()
{
	WorksheetPage wp;
	wp.Create("Origin");
	
	Worksheet wks;	
	vector<int> vR1, vC1, vR2, vC2;
	bool bRet;
	
	// Full rows selected: only need to specified the row indices
	wks = wp.Layers(0);
		
	vR1.SetSize(2);
	vR1[0] = 0;		//select rows 0
	vR1[1] = 3;		//select rows 3
	
	bRet = wks.SetSelectedRange(vR1);
	if(bRet)
		printf("Sussessfully selected range!\n");
	else
		printf("Failed to select range!\n");
	
	//individual cells selected
	wp.AddLayer();
	wks = wp.Layers(1);
	
	vR1.SetSize(1);
	vR1[0] = 5;
	vC1.SetSize(1);
	vC1[0] = 0;

	bRet = wks.SetSelectedRange(vR1,vC1);	//select cell[6:6] in column A
	if(bRet)
		printf("Sussessfully selected range!\n");
	else
		printf("Failed to select range!\n");
	
	// partial cols selected 
	wp.AddLayer();
	wks = wp.Layers(2);
	
	vR1.SetSize(1);
	vR1[0] = 5;

	vC1.SetSize(1);
	vC1[0] = 0;

	vR2.SetSize(1);
	vR2[0] = 20;

	bRet = wks.SetSelectedRange(vR1, vC1, vR2);	//select cells in column A from the 6th row to the 21th row
	
	if(bRet)
		printf("Sussessfully selected range!\n");
	else
		printf("Failed to select range!\n");
	
	// select several regions
	wp.AddLayer();
	wks = wp.Layers(3);
	
	vR1.SetSize(2);
	vR1[0] = 1;
	vR1[1] = 4;
	
	vC1.SetSize(2);
	vC1[0] = 0;
	vC1[1] = 0;
	
	vR2.SetSize(2);
	vR2[0] = 2;
	vR2[1] = 5;
	
	vC2.SetSize(2);
	vC2[0] = 0;
	vC2[1] = 1;
	
	bRet = wks.SetSelectedRange(vR1, vC1, vR2, vC2);	
	
	if(bRet)
		printf("Sussessfully selected range!\n");
	else
		printf("Failed to select range!\n");
}

Get Column Label Range

Minimum Origin Version Required: Origin 8.1 SR1

This example shows how to get label range selection

//Before run the following code, make sure the active worksheet exists and select multiple label regions in worksheet
void wks_get_column_label_range_ex()
{
	 //Make sure the active worksheet has existed
	Worksheet wks = Project.ActiveLayer();
    if(!wks)
    {
    	printf("Error. Please active worksheet before running!");
    	return;
    }
       
    //Create a Grid and attach it to the active worksheet
    Grid gg;
    gg.Attach(wks);
    
    vector<int> vR1, vC1, vR2, vC2;
    BOOL bCheckLabelRows = true; 
    int iRegions = gg.GetSelection(vR1, vC1, vR2, vC2, bCheckLabelRows);
    
    if( 0 == iRegions )
    {
    	printf("No range selected in the active worksheet %s!", wks.GetName());
    	return;
    }
    
    for(int ii = 0 ; ii < iRegions ; ii++)
    {
        printf("Region %u : R%d C%d : R%d C%d\n", ii, vR1[ii], vC1[ii], vR2[ii], vC2[ii]);
    }
	
}

Set Column Label Range

Minimum Origin Version Required: Origin 8 SR0

This example shows how to set ranges a worksheet with label coluum

void wks_set_column_label_Range_ex()
{
	WorksheetPage wp;
	wp.Create("Origin");
	if(!wp)
	{
		return;
	}
	
	Worksheet wks(wp.GetName());

    //Create a Grid and attach it to the active worksheet
    Grid gg;
    gg.Attach(wks);	
    
    int nSize = 3;	//the number of regions
	vector<int> vR1, vC1, vR2, vC2;
	
	vR1.SetSize(nSize);
	vR1[0] = 1;
	vR1[1] = 5;
	vR1[2] = 8;
	
	vC1.SetSize(nSize);
	vC1[0] = 1;
	vC1[1] = 1;
	vC1[2] = 0;

	vR2.SetSize(nSize);
	vR2[0] = 2;
	vR2[1] = 5;
	vR2[2] = 8;

	vC2.SetSize(nSize);
	vC2[0] = 0;
	vC2[1] = 1;
	vC2[2] = 0;

    bool bData = false;		//the selections are label regions in worksheet
    bool bRet = gg.SetSelection(vR1, vC1, vR2, vC2, bData);
    
    if( bRet )
    	printf("Successfully Set Selection in %s\n", wks.GetName());
    else
    	printf("Failed to set selection in %s\n", wks.GetName());
}