Dieses Beispiel zeigt die Erzeugung eines Tabellenobjektes innerhalb eines Berichtscontainers und legt darin eine neue Datenzeile und drei Spalten an.
Beachten Sie, dass Sie auch dann, wenn Sie nicht die APIs zur Ansteuerung des Berichtscontainers (LlDbAddTable() etc.) verwenden einen Berichtscontainer mit genau einer Tabelle anlegen müssen.
HLLJOB hJob = LlJobOpen(-1);
// Neues
Projekt erzeugen
LlProjectOpen(hJob, LL_PROJECT_LIST, "c:\\simple.lst",
LL_PRJOPEN_CD_CREATE_ALWAYS | LL_PRJOPEN_AM_READWRITE);
HLLDOMOBJ hProj;
LlDomGetProject(hJob, &hProj);
// Objektliste holen
HLLDOMOBJ hObjList;
LlDomGetObject(hProj, "Objects", &hObjList);
// Berichtscontainer erzeugen und Eigenschaften setzen
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"));
// Unterobjektliste holen und Tabelle darin anlegen
HLLDOMOBJ hObjSubItems;
LlDomGetObject(hObjReportContainer, _T("SubItems"), & hObjSubItems);
HLLDOMOBJ hObjTable;
LlDomCreateSubobject(hObjSubItems, 0, _T("Table"), &hObjTable);
// Zeilenliste holen
HLLDOMOBJ hObjTableLines;
LlDomGetObject(hObjTable , _T("Lines"), &hObjTableLines);
// Datenzeilenliste holen
HLLDOMOBJ hObjTableData;
LlDomGetObject(hObjTableLines , _T("Data"), &hObjTableData);
// Neue Zeilendefinition anlegen
HLLDOMOBJ hObjTableLine;
LlDomCreateSubobject(hObjTableData, 0, _T("Line"), &hObjTableLine);
LlDomSetProperty(hObjTableLine,_T("Name"), _T("My new table line"));
// Kopfzeilenliste holen
HLLDOMOBJ hObjTableHeader;
LlDomGetObject(hObjTableLines , _T("Header"), &hObjTableHeader);
// Neue Zeilendefinition anlegen
HLLDOMOBJ hObjTableHeaderLine;
LlDomCreateSubobject(hObjTableHeader, 0, _T("Line"), &hObjTableHeaderLine);
// Feldliste für Kopfzeilen holen
HLLDOMOBJ hObjTableHeaderFields;
LlDomGetObject(hObjTableHeaderLine , _T("Fields"), &hObjTableHeaderFields);
// Feldliste für Datenzeilen holen
HLLDOMOBJ hObjTableDataFields;
LlDomGetObject(hObjTableLine , _T("Fields"), &hObjTableDataFields);
TCHAR aczVarName[1024];
int nItemCount = 3;
// Tabelle mit nItemCount Spalten anlegen
for (int i=0; i < nItemCount; i++)
{
// Spalteninhalt für die Kopfzeile bestimmen. Beachten Sie
// die Hochkommata – dadurch wird fester Text (z. B. "Field1") als
// Inhalt übergeben
_stprintf(aczVarName, "'Field%d'", i);
// Neues Feld in Kopfzeile anlegen und Eigenschaften setzen
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"));
// Spalteninhalt für die Datenzeile bestimmen. Jetzt ohne
// die Hochkommata – dadurch wird der Feldinhalt (z. B. Field1) als
// Inhalt übergeben
_stprintf(aczVarName, "Field%d", i);
// Neues Feld in Datenzeile anlegen und Eigenschaften setzen
HLLDOMOBJ hObjDataField;
LlDomCreateSubobject(hObjTableDataFields, 0,
_T("Text"),
&hObjDataField);
LlDomSetProperty(hObjDataField,_T("Contents"), aczVarName);
LlDomSetProperty(hObjDataField,_T("Width"), _T("50000"));
}
// Projekt speichern
LlProjectSave(hJob, NULL);
LlProjectClose(hJob);
LlJobClose(hJob);