The following examples show how to get one whole label contents from Worksheet by row index, label type or label name.
Minimum Origin Version Required: Origin 8.1 SR0
Label type (RCLT_*) defined in oc_const.h file ROWCOLLABELTYPE enum.
Worksheet wks; wks = Project.ActiveLayer(); Grid gg; gg.Attach(wks); vector<string> vstr; int nLabelType = RCLT_UDL; // "UDL" means User Defined Label type gg.GetLabelsByType(vstr, nLabelType); out_int("size=", vstr.GetSize()); // convert string vector to double vector vector vv; convert_str_vector_to_num_vector(vstr, vv); out_int("size=", vv.GetSize());
Minimum Origin Version Required: Origin 8.0 SR0
The index of data row begin from 0, however the index of label row begin from -1, number from the bottom up, -1, -2, -3 and so on. The code below shows how to get label type from the row index. Then get label contents by label type according to the above section.
Worksheet wks; wks = Project.ActiveLayer(); int nRowIndex = -1; // the last header row int nLabelType = wks.GetLabelType(nRowIndex); // 1 means the row is user defined label, else 0 means not out_int("", nLabelType == RCLT_UDL);
If want to get user defined label contents by label name, need to find the label by label name firstly. Then use Grid::GetLabelsByType method to get label contents by label type.
There are two ways to find the user defined label, please choise one based on Origin version.
Minimum Origin Version Required: Origin 8.5 Sr1
Worksheet wks = Project.ActiveLayer(); // find the label named Threshold int nLabelType = find_user_defined_label(wks, "Threshold"); out_int("Label Type=", nLabelType);
Minimum Origin Version Required: Origin 8.1 Sr0
#include <Dialog.h> #define IDC_WORKSHEET 1001 void Worksheet_Get_Label_Contents_ex(Dialog& dlg) { Worksheet wks = Project.ActiveLayer(); Grid gg; gg.Attach(wks); vector<string> vsLabelNames; if( gg.GetUserDefinedLabelNames(vsLabelNames) ) { string strLabelName = "Threshold"; // input // return -1 means not found, else return the index in vector int nn = vsLabelNames.Find(strLabelName); out_int("", nn); int nLabelType; if( nn >= 0 ) nLabelType = RCLT_UDL + nn; out_int("Label Type=", nLabelType); } }
After get label type index by label name, see the above section to get row label contents by label type index.