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);