Creating a Table

This example shows the creation of a table object inside a report container and creates a new dataline and three columns inside it.

 

Please note that, even if you do not use the APIs to control the report container, you must create a report container with exactly one table.

 

HLLJOB hJob = LlJobOpen(-1);

// Create new project

LlProjectOpen(hJob, LL_PROJECT_LIST, "c:\\simple.lst",

       LL_PRJOPEN_CD_CREATE_ALWAYS | LL_PRJOPEN_AM_READWRITE);

 

HLLDOMOBJ hProj;

LlDomGetProject(hJob, &hProj);

 

// Get object list

HLLDOMOBJ hObjList;

LlDomGetObject(hProj, "Objects", &hObjList);

 

// Create report container and set properties

HLLDOMOBJ hObjReportContainer;

LlDomCreateSubobject(hObjList, 0, _T("ReportContainer"),&hObjReportContainer);

LlDomSetProperty(hObjReportContainer,_T("Position.Left"), _T("27000"));

LlDomSetProperty(hObjReportContainer,_T("Position.Top"), _T("103500"));

LlDomSetProperty(hObjReportContainer,_T("Position.Width"), _T("153400"));

LlDomSetProperty(hObjReportContainer,_T("Position.Height"), _T("159500"));

 

// Get subobject list and create table inside it

HLLDOMOBJ hObjSubItems;

LlDomGetObject(hObjReportContainer, _T("SubItems"), & hObjSubItems);

HLLDOMOBJ hObjTable;

LlDomCreateSubobject(hObjSubItems, 0, _T("Table"), &hObjTable);

 

// Get line list

HLLDOMOBJ hObjTableLines;

LlDomGetObject(hObjTable , _T("Lines"), &hObjTableLines);

 

// Get data line list

HLLDOMOBJ hObjTableData;

LlDomGetObject(hObjTableLines , _T("Data"), &hObjTableData);

 

// Create new line definition

HLLDOMOBJ hObjTableLine;

LlDomCreateSubobject(hObjTableData, 0, _T("Line"), &hObjTableLine);

LlDomSetProperty(hObjTableLine,_T("Name"), _T("My new table line"));

 

// Get header list

HLLDOMOBJ hObjTableHeader;

LlDomGetObject(hObjTableLines , _T("Header"), &hObjTableHeader);

 

// Create new line definition

HLLDOMOBJ hObjTableHeaderLine;

LlDomCreateSubobject(hObjTableHeader, 0, _T("Line"), &hObjTableHeaderLine);

 

// Get field list for headers

HLLDOMOBJ hObjTableHeaderFields;

LlDomGetObject(hObjTableHeaderLine , _T("Fields"), &hObjTableHeaderFields);

 

// Get field list for data lines

HLLDOMOBJ hObjTableDataFields;

LlDomGetObject(hObjTableLine , _T("Fields"), &hObjTableDataFields);

 

TCHAR aczVarName[1024];

int nItemCount = 3;

for (int i=0; i < nItemCount; i++)

{

       sprintf(aczVarName, "'Var%d'", i);

      

       // Create new field in header and set properties

       HLLDOMOBJ hObjHeaderField;

       LlDomCreateSubobject(hObjTableHeaderFields, 0, _T("Text"),
                &hObjHeaderField);

       LlDomSetProperty(hObjHeaderField, _T("Contents"), aczVarName);

       LlDomSetProperty(hObjHeaderField,_T("Filling.Style"), _T("1"));

       LlDomSetProperty(hObjHeaderField,_T("Filling.Color"),
                _T( "RGB(204,204,255)"));

       LlDomSetProperty(hObjHeaderField,_T("Font.Bold"), _T("True"));

       LlDomSetProperty(hObjHeaderField,_T("Width"), _T("50000"));

      

       sprintf(aczVarName, "Var%d", i);

      

       // Create new field in data line and set properties

       HLLDOMOBJ hObjDataField;

       LlDomCreateSubobject(hObjTableDataFields, 0, _T("Text"),
                &hObjDataField);

      

       LlDomSetProperty(hObjDataField,_T("Contents"), aczVarName);

       LlDomSetProperty(hObjDataField,_T("Width"), _T("50000"));

}

 

// Save project

LlProjectSave(hJob, NULL);

LlProjectClose(hJob);

LlJobClose(hJob);